我正在使用boost :: asio并将一个列表发送到客户端并在完成时关闭套接字。不知何故,客户有时在收到所有内容之前收到文件结束错误。
我猜这与服务器在发送最后一个列表条目后立即关闭套接字有关。有没有一种简单的方法可以解决这个async_send,只有在数据成功发送后调用处理程序?
或者我的文件结束错误来自其他地方?
答案 0 :(得分:2)
Boost.Asio是TCP和UDP套接字上独立于操作系统的抽象层。它们不保证其他应用程序已接收和处理数据。您需要在应用程序中包含此逻辑,您可能需要学习OSI model。
如果在async_send()
返回后立即关闭套接字,则这是不正确的。只有在调用完成处理程序后才能关闭它。