在 Linux 系统上正常关闭 TCP 服务器
Closing TCP Server gracefully on Linux system
创建服务器套接字后,我们得到父FD。使用父 FD 接受客户端连接后,它将创建更多子 FD。
因此,当调用 close(( 时,最佳实践是什么:
- 在所有客户端 FD 上调用 close(
- (,然后在父 FD 上调用 close((。
- 首先调用父 FD 上的 close,然后在每个子 FD 上调用 close((
- 在父 FD 上调用 close(( 就足够 了
将 Web 服务器对优雅关闭的定义归结为 TCP,您将获得以下内容:
- 关闭所有侦听/父套接字,但保持所有活动连接运行。这可以防止形成新的连接。
- 等待客户端自然关闭活动/子连接,如果关闭,则关闭其套接字。
- 如果在给定的时间段后仍有活动/子连接,请强制关闭其套接字。
基本上,您优先考虑现有的活动连接,并尝试强制关闭其中最少的连接。
相关文章:
- ASIO 的 TCP 套接字::async_wait() 并在此之后关闭套接字
- 在服务器关闭的TCP连接上发送数据时的行为不一致
- 在写入过程中立即使用boost::asio检测关闭的TCP连接
- C++ TCP 服务器 (Winsock) 连接 (无效客户端) 然后立即关闭
- 在 Linux 系统上正常关闭 TCP 服务器
- 线程安全关闭同步使用的 boost::asio::ip::tcp::socket
- C :接收Sigkill时如何关闭TCP套接字(服务器)
- 提升ASIO TCP,为什么我不能在服务器端只有一个数据套接字可以打开和关闭
- TCP套接字:在发送之前检测对等方是否已关闭?(Linux)
- 如何防止c++asio tcp服务器关闭
- Java -> C++ TCP 套接字直到关闭才发送
- boost::asio::tcp::socket 关闭并取消而不调用处理程序
- C++ 服务器在客户端上终止连接进程后不会关闭 TCP 套接字连接
- 如何正确关闭asio-tcp服务器
- 关闭套接字而不等待发送成功-Winsock2非阻塞TCP套接字
- c++ TCP连接关闭
- 服务器关闭后TCP/IP客户端重新连接
- TCP - 如何关闭在线程 -C++ 中创建的客户端
- 无法检测到C++同步提升::asio::ip::tcp::套接字连接正在关闭
- 优雅地关闭TCP套接字