[英]asio::read() takes really long time, no proble with asio::write
我正在編寫簡單的同步 SMTP 和 POP3 客戶端。 問題在於讀取服務器響應。 它被正確讀取,雖然它需要很長時間,比如一分鍾。 我查看了與wireshark的通信並立即得到了響應,但不知何故這條線正在節流(調試器檢查)
boost::asio::read(socket, receiveBuffer, boost::asio::transfer_all(), error);
難道我做錯了什么? 你知道有什么解決辦法嗎?
streambuf
transfer_all
在兩種情況下返回:讀取了 64k 字節的數據(這是單次操作讀取數據的默認值),或發生錯誤,例如第二側關閉連接,因此在這種情況下您有一些讀取數據以EOF
作為錯誤。 你的write
調用有效,因為write
需要一些緩沖區並有它的長度,所以它知道必須發送多少字節。 如果您不知道必須讀取多少數據,請使用read_until
,讀取直到\\r\\n序列出現在即將到來的數據中。
@rafix07
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.