如何在连接了所有客户端套接字的情况下关闭boost asio服务器套接字

How to close boost asio server socket with all client sockets connected

本文关键字:套接字 情况下 boost 服务器 asio 客户端 连接      更新时间:2023-10-16

我使用boost:asio::ip::tcp::receptor在我的应用程序中创建服务器套接字。我使用close函数而不是io_service中的stop函数关闭此接收器套接字,但所有连接的客户端套接字只有在我的应用程序关闭时才会关闭。我该怎么解决?谢谢

执行以下任一操作:

  • 在套接字上调用socket::close()
  • 破坏插座。有关在销毁过程中如何关闭套接字的详细信息,请参阅此答案

io_service::stop()仅停止事件循环的处理。工作仍然可以发布到io_service中,现有工作将保留在io_service中。因此,应用程序必须在它希望关闭的每个套接字上调用socket::close()。对于可移植的优美闭包,请在调用close()之前先调用socket::shutdown()

值得花点时间回顾一下Boost.Asio的HTTPServer1示例。它使用connection_manager关闭所有连接。

相关文章: