Следующий код предназначен для отображения изображения, отправленного по сети. Я отправил заголовок из 16 байт, который я использую, чтобы вычислить размер изображения, который следует, а затем прочитал, что много байтов и отображает изображение. я использовал концепцию по этой ссылке Tcp packets using QTcpSocketЧтение сообщений переменной длины в Qtcp readyRead()
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 говорит «не отвечает». Как мне это решить?
Благодаря
Спасибо Владимиру ... – Ramki