我正在使用 boost::asio 并向客户端发送列表并在完成后关闭套接字。不知何故,客户端有时在收到所有内容之前收到文件结束错误。
我猜这与服务器在发送最后一个列表条目后立即关闭套接字有关。 async_send只有在数据发送成功后才调用handler,有什么简单的方法可以解决吗?
或者我的文件结束错误来自其他原因?
最佳答案
Boost.Asio 是基于 TCP 和 UDP 套接字的独立于操作系统的抽象层。它们不保证其他应用程序已接收并处理数据。您需要在您的应用程序中包含此逻辑,您可能需要研究 OSI model .
如果您在 async_send()
返回后立即关闭套接字,这是不正确的。您应该仅在调用完成处理程序后关闭它。
关于c++ - Boost.Asio - 确保对方收到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14420404/