asio::read() 需要很长时间,使用 asio::write 没有问题

asio::read() takes really long time, no proble with asio::write

本文关键字:asio 使用 有问题 长时间 write read      更新时间:2023-10-16

我正在编写简单的同步SMTP和POP3客户端。问题在于读取服务器响应。它被正确读取,尽管它需要很长时间,比如一分钟。我已经查看了与wireshark的通信,并立即得到了响应,但不知何故,这一行受到限制(调试器检查(

boost::

asio::read(socket, receiveBuffer, boost::asio::transfer_all((, error(;

我做错了什么吗?你知道有什么解决方案吗?

transfer_all

两种情况下返回streambuf:读取了 64k 字节的数据(这是在单个操作中读取数据的默认值(,或者发生错误,例如第二端关闭了连接,因此在这种情况下,您有一些读取数据EOF作为错误。您的write调用有效,因为write需要一些缓冲区并且有其长度,因此它知道必须发送多少字节。如果不知道必须读取多少数据,请使用read_until,读取,直到\r序列出现在即将到来的数据中。

@rafix07