繁体   English   中英

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

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

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

执行以下任一操作:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM