如何在连接了所有客户端套接字的情况下关闭boost asio服务器套接字
How to close boost asio server socket with all client sockets connected
我使用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
关闭所有连接。
相关文章:
- 在不知道套接字的情况下关闭网络连接
- UDP 套接字 select() 在某些情况下无延迟(超时)返回 1
- 如何在不设置 ulimit -n 的情况下解决套接字程序打开太多文件的错误
- 如何在没有套接字管理的情况下使用OpenSSL库?
- 我可以在不包含 <sys/socket.h> 的情况下使用 C 套接字吗?
- C++,在阻塞模式下从套接字读取所有可用字节的最佳方法
- 套接字:在没有memcpy的情况下,使用recvfrom将UDP数据获取到字对齐的缓冲区
- 在没有 SO_LINGER > 0 的情况下强制关闭服务器端套接字可能会丢失数据,对吧?
- 抽象库,便于在linux下进行套接字编程
- c++套接字客户端在输出流关闭的情况下不断从Java服务器事件中接收一些内容
- 如何处理在同一套接字上发布多个操作的情况
- 即使在文件描述符不可用的情况下,也能有效地侦听多个套接字
- 如何在不关闭服务器套接字的情况下在C++客户端的主循环中接收数据?
- 如何在不相互阻塞的情况下使用套接字和计时器
- Listen套接字只能在没有-std=c++的情况下在c++中工作
- 如何在winsock中不绑定套接字的情况下接收数据
- 在这种情况下,sendto()在UDP套接字上返回0
- 在不关闭本机处理程序的情况下销毁Boost Asio套接字
- 如何在连接了所有客户端套接字的情况下关闭boost asio服务器套接字
- 在有条件的情况下,连接到C++和Boost Asio中的套接字