4

我正在使用 boost::asio 并向客户端发送列表并在完成后关闭套接字。不知何故,客户有时会在收到所有内容之前收到文件结束错误。

我猜这与服务器在发送最后一个列表条目后立即关闭套接字有关。有没有一种简单的方法来解决这个 async_send 仅在数据成功发送后才调用处理程序?

还是我的文件结束错误来自其他原因?

4

1 回答 1

2

Boost.Asio 是基于 TCP 和 UDP 套接字的独立于操作系统的抽象层。它们不保证其他应用程序已接收并处理了数据。您需要在应用程序中包含此逻辑,您可能想研究OSI 模型

如果您在async_send()返回后立即关闭套接字,这是不正确的。您应该仅在调用完成处理程序后关闭它。

于 2013-01-20T04:15:38.407 回答