c – Boost.Asio – 确保对方收到数据

我正在使用boost :: asio并将一个列表发送到客户端并在完成时关闭套接字.不知何故,客户端在收到所有内容之前有时会收到End of File错误.

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

或者我的文件结束错误来自其他东西?

最佳答案 Boost.Asio是TCP和UDP套接字上独立于操作系统的抽象层.它们不保证其他应用程序已接收和处理数据.您需要在应用程序中包含此逻辑,您可能需要学习
OSI model.

如果在async_send()返回后立即关闭套接字,则这是不正确的.只有在调用完成处理程序后才应关闭它.

点赞