我不久前开始使用QT而且我正在制作一个小型网络应用程序。我收到的数据包大小有一些字节限制问题。
这是我用来读取字节的代码:
void client::readyRead()
{
QByteArray data;
while(socket->bytesAvailable()){
data.append(socket->readAll());
}
dataReceived(data);
//emit dataToProcess(data);
}
它工作正常,直到我得到一个大于512字节的数据包。一旦我通过了,其余部分没有放入data
,我的程序崩溃了。我使用了Wireshark并确认该数据包只包含1024字节且没有碎片。从我在这里读到的,while
循环应该允许程序读取整个数据包。