同步读取多个TCP响应
Synchronous reading of multiple TCP responses
我正在编写一个简单的 POP3 客户端。例如,当我向 POP3 服务器发出 LIST
请求时,它会响应可用消息的索引和大小(字节)。它看起来像这样:
+OK 3 messages\r\n
1 103\r\n
2 140\r\n
3 184\r\n
我使用 boost::asio::read_until
和 \r\n
作为分隔符,但这样我就无法保持同步,因为有时只读取第一部分,例如+OK 3 messages\r\n1 103\r\n
这就是乐观的情况。我希望我的程序等待消息的最后一部分。我想出的唯一解决方案是在发出请求之后和阅读之前放置 sleep()
,但这似乎不是可靠也不方便的解决方案。
有什么更好的处理方法?
根据 POP3 specification 的秘密是等待一个合适的定界符,即 .\r\n
致谢:@RemyLebeau
我正在编写一个简单的 POP3 客户端。例如,当我向 POP3 服务器发出 LIST
请求时,它会响应可用消息的索引和大小(字节)。它看起来像这样:
+OK 3 messages\r\n
1 103\r\n
2 140\r\n
3 184\r\n
我使用 boost::asio::read_until
和 \r\n
作为分隔符,但这样我就无法保持同步,因为有时只读取第一部分,例如+OK 3 messages\r\n1 103\r\n
这就是乐观的情况。我希望我的程序等待消息的最后一部分。我想出的唯一解决方案是在发出请求之后和阅读之前放置 sleep()
,但这似乎不是可靠也不方便的解决方案。
有什么更好的处理方法?
根据 POP3 specification 的秘密是等待一个合适的定界符,即 .\r\n
致谢:@RemyLebeau