Qt QUdpSocket类不读取最后的字节
我有一个从QUdp套接字读取数据的应用程序。数据以块的形式出现,在固定大小的头数据和剩余数据之后,有一个头 标题=50字节 固定尺寸=300 剩下的是=hasPendingDatagrams()){ QByteArray数据报; resize(udpSocket->pendingDatagramSize()); QHostAddress发送者; 发送端口; udpSocket->readDatagram(datagram.data(),datagram.size(), &发送方和发送方端口);Qt QUdpSocket类不读取最后的字节,qt,udp,Qt,Udp,我有一个从QUdp套接字读取数据的应用程序。数据以块的形式出现,在固定大小的头数据和剩余数据之后,有一个头 标题=50字节 固定尺寸=300 剩下的是=hasPendingDatagrams()){ QByteArray数据报; resize(udpSocket->pendingDatagramSize()); QHostAddress发送者; 发送端口; udpSocket->readDatagram(datagram.data(),datagram.size(), &发送方和发送方端口);
qout检查readDatagram()的返回值。我的假设是,最后一个数据块没有被检测为完整数据报(haspendingDatagrams返回false),因为它较小?检查什么字节可用()returns.yeah frank我想是的。它没有被检测到。解决方案是什么?我假定此代码位于连接到套接字的
readyRead()信号的插槽中?
while(udpSocket->hasPendingDatagrams()) {
QByteArray datagram;
datagram.resize(udpSocket->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;
udpSocket->readDatagram(datagram.data(), datagram.size(),
&sender, &senderPort);
qout << "datagram received from " << sender.toString() << endl;
}
}
}