簡體   English   中英

asio::read() 需要很長時間,asio::write 沒有問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM