我使用boost:asio::ip::tcp::acceptor在我的应用中创建服务器套接字。我使用close
函数关闭此接受器套接字,而不是stop
中的io_service
函数,但所有连接的客户端套接字仅在我的应用关闭时关闭。我该如何解决这个问题?
谢谢!
答案 0 :(得分:7)
执行以下任一操作:
socket::close()
。 io_service::stop()
仅停止处理事件循环。工作仍然可以发布到io_service
,现有工作将保留在io_service
中。因此,应用程序必须在它希望关闭的每个套接字上调用socket::close()
。要获得便携式优雅闭包,请在致电close()
之前致电socket::shutdown()
。
值得花点时间来回顾Boost.Asio的HTTP Server 1示例。它使用connection_manager
来关闭所有连接。