qt socket下发送和接收图片
永夜之魅 2016-04-09 09:09:35
QDataStream in(socket);
in.setVersion(QDataStream::Qt_5_1);
while(socket->bytesAvailable()>0)
{
if(datasize==0)
{
if(socket->bytesAvailable()<(int)sizeof(quint32))
return ;
in>>datasize;
printf("1:%d\n",datasize );
}
if(socket->bytesAvailable()<datasize)
return ;
// QMessageBox::information(this,"connecfsdfsdt","connsdfafaect success");
QByteArray array = socket->read(datasize);
printf("2:%d\n",datasize );
QBuffer buffer(&array);
buffer.open(QIODevice::ReadOnly);
QImageReader reader(&buffer,"BMP");
QImage image = reader.read();
// QPixmap pm;
//in>>pm;
//pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
if(!image.isNull())
{
ui->label->setPixmap(QPixmap::fromImage(image).scaled(ui->label->size()) );
ui->label->setText( tr("") );
datasize=0;
}
}
以上是接收
this->pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
ui->label->setPixmap(this->pixmap.scaled(ui->label->size()));
QBuffer buffer;
buffer.open(QIODevice::ReadWrite);
this->pixmap.save(&buffer,"BMP");
QByteArray array;
QDataStream out(&array,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_1);
/*QBuffer buffer;
buffer.open(QIODevice::ReadWrite);
this->pixmap.save(&buffer,"BMP");
QByteArray dataStr;
QDataStream out(&dataStr,QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_1);
out << (quint64) buffer.data().size();
dataStr.append(buffer.data());
client->write(dataStr);
dataStr.resize(0);*/
out<<(quint32)buffer.data().size();
//out<<pixmap;
array.append(buffer.data());
// out<<(quint16)(array.size()-sizeof(quint16));
QTcpSocket *clientConnect = server->nextPendingConnection();
clientConnect->write(array);
array.resize(0);
}
以上是发送
为什么不可以?不知道是哪里出了问题呀
弄了好久
求助各位