没有信号/插槽的QtcpSocket

时间:2012-09-08 22:23:09

标签: qt qt4 qtcpsocket

是否可以在不使用 readyRead 广告位的情况下使用 QTcpSocket

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

QByteArray ba;

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

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

但有时我没有从服务器收到所有数据!?

1 个答案:

答案 0 :(得分:2)

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

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