QSslSocket waitForReadyRead似乎不起作用

时间:2014-08-14 19:38:35

标签: qt networking ssl tcp

这是我编写的同步TCP客户端中read()语句之上的一小段代码。

    std::cout << "available? " << socket->bytesAvailable() << std::endl;
    socket->waitForReadyRead();
    std::cout << "reading..." << std::endl;
    bytesRead = socket->read(message + totalBytesRead, messageSize - totalBytesRead);

以下一行:

  

插座&GT;信息bytesAvailable()

返回4,因此显然可以读取数据。我遇到的问题是waitForReadyRead()阻塞,直到默认超时为30秒。 Read()然后继续读取下一行的0字节。

因此,如果有可读字节,为什么waitForReadyRead()阻止

1 个答案:

答案 0 :(得分:0)

来自QIODevice :: waitForReadyRead文档:

  

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

     

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

处理网络连接的最佳原因是使用信号/插槽机制(异步为什么)