1

是否可以在不使用readyRead插槽的情况下使用QTcpSocket ?

我尝试使用此代码从 tcp 服务器读取数据:

QByteArray ba;

forever
{
sck.waitForReadyRead();
ba.append( sck.readAll() );

if (sck.bytesAvailable() == 0)
  break;
}

但有时我没有收到来自服务器的所有数据!?

4

1 回答 1

2

是的,有可能。TCP是面向流的,你不能像那样退出迭代。您在QAbstractSocket文档中有一个示例。

如您所见,您必须继续阅读,直到连接关闭(waitForReadyRead () 方法返回 false)或直到您发送一些终止序列,这取决于您。

于 2012-09-08T23:43:42.813 回答