[英]QSslSocket waitForReadyRead does not appear to be working
這是我編寫的同步TCP客戶端中read()語句上方的一小段代碼。
std::cout << "available? " << socket->bytesAvailable() << std::endl;
socket->waitForReadyRead();
std::cout << "reading..." << std::endl;
bytesRead = socket->read(message + totalBytesRead, messageSize - totalBytesRead);
下一行:
socket-> bytesAvailable()
返回4,因此顯然有可讀取的數據。 我遇到的問題是,waitForReadyRead()一直阻塞到默認的30秒超時為止。 Read()然后繼續在下一行讀取0個字節。
因此,如果有可供讀取的字節,為什么waitForReadyRead()會阻塞
來自QIODevice :: waitForReadyRead文檔:
阻塞,直到可以讀取新數據並且發出readyRead()信號為止,或者直到經過了毫秒(毫秒)。 如果毫秒為-1,則此功能不會超時。
如果有新數據可讀取, 則返回true;否則返回true。 否則返回false(如果操作超時或發生錯誤)。
處理網絡連接的最佳方法是使用信號/插槽機制( 異步的原因)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.