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