【发布时间】:2016-05-20 14:02:05
【问题描述】:
以下代码旨在显示通过网络发送的图像。我发送了一个 16 字节的标头,用于计算随后的图像大小,然后读取那么多字节并显示图像。 我在这个链接上使用了这个概念Tcp packets using QTcpSocket
void socket::readyRead()
{
while(socket->bytesAvailable() > 0) {
quint8 Data[16];
socket->read((char *)&Data,16);
img_size = (((quint8)Data[1]<<8)+ (quint8)Data[0]) * (((quint8)Data[3]<<8)+ (quint8)Data[2]) * 1;
QByteArray buffer = socket->read(img_size);
while(buffer.size() < (img_size))
{
// qDebug() << buffer.size();
socket->waitForReadyRead();
buffer.append(socket->read((img_size)-(buffer.size()) ));
}
unsigned char* imgdatara = (unsigned char*)&buffer.data()[0];
if( !image )
image = new QImage(imgdatara,32,640,QImage::Format_Grayscale8);
else
{
delete image;
image = new QImage(imgdatara,32,640,QImage::Format_Grayscale8);
}
emit msg(image);
}
}
我的 GUI 显示“没有响应”。我该如何解决这个问题?
谢谢
【问题讨论】:
标签: c++ qt qtcpsocket