【发布时间】:2015-03-05 21:43:29
【问题描述】:
我使用boost:asio::ip::tcp::acceptor 在我的应用程序中创建服务器套接字。我使用 close 函数关闭此接受器套接字,而不是 io_service 中的 stop 函数,但所有连接的客户端套接字仅在我的应用程序关闭时关闭。我该如何解决?
谢谢!
【问题讨论】:
标签: c++ boost-asio serversocket
我使用boost:asio::ip::tcp::acceptor 在我的应用程序中创建服务器套接字。我使用 close 函数关闭此接受器套接字,而不是 io_service 中的 stop 函数,但所有连接的客户端套接字仅在我的应用程序关闭时关闭。我该如何解决?
谢谢!
【问题讨论】:
标签: c++ boost-asio serversocket
执行以下任一操作:
socket::close()。io_service::stop() 只停止事件循环的处理。作品仍然可以发布到io_service,现有作品将保留在io_service。因此,应用程序必须在它希望关闭的每个套接字上调用socket::close()。对于可移植的优雅闭包,请在调用 close() 之前调用 socket::shutdown()。
可能值得花时间查看 Boost.Asio 的 HTTP Server 1 示例。它使用connection_manager 关闭所有连接。
【讨论】: