2

我使用boost:asio::ip::tcp::acceptor在我的应用程序中创建服务器套接字。我使用函数关闭此接受器套接字close,而不是stop函数,io_service但所有连接的客户端套接字仅在我的应用程序关闭时关闭。我该如何解决?谢谢!

4

1 回答 1

9

执行以下任一操作:

  • socket::close()在套接字上调用。
  • 销毁套接字。有关在销毁期间如何关闭套接字的详细信息,请参阅此答案。

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

花点时间查看 Boost.Asio 的HTTP Server 1示例可能是值得的。它使用 aconnection_manager来关闭所有连接。

于 2013-02-22T15:41:06.563 回答