0

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

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

现在我相信clntSocket->waitForReadyRead();只有在有数据要从套接字读取时才应该解除阻塞,但是它似乎会自行解除阻塞,并且 tick_stream 是空的关于可能出现什么问题的任何建议?

4

1 回答 1

2

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

来自QtDoc

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

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

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

于 2013-08-12T15:00:48.157 回答