0
我正在使用Qt5,我試圖通過QDataStream中的QByteArray數據包通過QUdpProtocol發送QPixmap。發送像素映射很簡單:QPixmap通過QUdpSocket - 無法讀取正確的數據
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_0);
out << (quint32)0;
out << pixmap;
out.device()->seek(0);
out << (quint32)(block.size() - sizeof(quint32));
socket->write(block);
qDebug() << "Block size:" << (float)(block.size()/1024.f) << "KB";
但閱讀...什麼也沒有發生 - 我的意思是,QLabel不填充任何改變,任何錯誤消息(和正確的嗎?)。
QByteArray buffer;
buffer.resize(sock->pendingDatagramSize());
sock->readDatagram(buffer.data(), buffer.size(), &remoteAddr, &remotePort);
if (sock->bytesAvailable() > 0)
return;
QDataStream out(&buffer, QIODevice::ReadOnly);
out.setVersion(QDataStream::Qt_5_0);
QPixmap p;
//out.device()->seek(0);
out >> p;
ui->label->setPixmap(p);
我知道在UDP數據包碎片,但我試圖發送50個像素,20,10,5,最後 - 1.沒有。 兩個程序顯示相同的字節數(發送和接收)。如果這很重要,我將兩個套接字綁定在QHostAddress::LocalHost
的同一端口上,但原始文本已成功發送。
我做錯了什麼?
使用調試器,我發現一個區別 - 收到的數據比發送代碼的數據(開始處)少1個「\ 000」塊。這只是兩個應用程序中的數據之間的差異。 – aso 2014-09-04 18:35:01