waitForReadyRead返回空字符串 - 为什么不阻塞?

时间:2013-08-12 14:55:48

标签: c++ qt qtcpsocket

我当前有一个阻止模型,我的客户端接收数据的代码如下

QByteArray tick_stream;
clntSocket->waitForReadyRead(-1);
tick_stream = clntSocket->read(800);

现在我相信clntSocket->waitForReadyRead();应该只在有来自套接字的数据时才会解除阻塞,但它似乎会自动解除阻塞,并且tick_stream是空的,可能出现什么错误?

1 个答案:

答案 0 :(得分:2)

您应该检查错误,因为错误会立即返回该方法。

来自QtDoc

  

bool QIODevice :: waitForReadyRead(int msecs)[虚拟]

     

阻止直到新数据可用于读取并且已发出readyRead()信号,或者直到msecs毫秒已经过去。如果msecs为-1,则此函数不会超时。

     

如果有新数据可供读取,则返回true;否则返回false(如果操作超时或发生错误)。