我正在编写简单的同步SMTP和POP3客户端。问题在于读取服务器响应。它被正确读取,尽管它需要很长时间,比如一分钟。我已经查看了与wireshark的通信,并立即得到了响应,但不知何故,这一行受到限制(调试器检查(
boost::asio::read(socket, receiveBuffer, boost::asio::transfer_all((, error(;
我做错了什么吗?你知道有什么解决方案吗?
transfer_all
在两种情况下返回
streambuf
:读取了 64k 字节的数据(这是在单个操作中读取数据的默认值(,或者发生错误,例如第二端关闭了连接,因此在这种情况下,您有一些读取数据EOF
作为错误。您的write
调用有效,因为write
需要一些缓冲区并且有其长度,因此它知道必须发送多少字节。如果不知道必须读取多少数据,请使用read_until
,读取,直到\r序列出现在即将到来的数据中。
@rafix07