我目前有一个阻塞模型,我的客户接收数据的代码如下
QByteArray tick_stream;
clntSocket->waitForReadyRead(-1);
tick_stream = clntSocket->read(800);
现在我相信clntSocket->waitForReadyRead();
只有在有数据要从套接字读取时才应该解除阻塞,但是它似乎会自行解除阻塞,并且 tick_stream 是空的关于可能出现什么问题的任何建议?
我目前有一个阻塞模型,我的客户接收数据的代码如下
QByteArray tick_stream;
clntSocket->waitForReadyRead(-1);
tick_stream = clntSocket->read(800);
现在我相信clntSocket->waitForReadyRead();
只有在有数据要从套接字读取时才应该解除阻塞,但是它似乎会自行解除阻塞,并且 tick_stream 是空的关于可能出现什么问题的任何建议?
您应该检查错误,因为该方法可能会在错误时立即返回。
来自QtDoc:
bool QIODevice::waitForReadyRead(int msecs) [虚拟]
阻塞,直到有新数据可供读取并且发出了 readyRead() 信号,或者直到 msecs 毫秒过去。如果 msecs 为 -1,则此函数不会超时。
如果有新数据可供读取,则返回 true;否则返回 false(如果操作超时或发生错误)。