在 Linux 系统上正常关闭 TCP 服务器

Closing TCP Server gracefully on Linux system

本文关键字:常关闭 TCP 服务器 Linux 系统      更新时间:2023-10-16

创建服务器套接字后,我们得到父FD。使用父 FD 接受客户端连接后,它将创建更多子 FD。

因此,当调用 close(( 时,最佳实践是什么:

    在所有客户端 FD 上调用 close(
  1. (,然后在父 FD 上调用 close((。
  2. 首先调用父 FD 上的 close,然后在每个子 FD 上调用 close((
  3. 在父 FD 上调用 close(( 就足够

将 Web 服务器对优雅关闭的定义归结为 TCP,您将获得以下内容:

  1. 关闭所有侦听/父套接字,但保持所有活动连接运行。这可以防止形成新的连接。
  2. 等待客户端自然关闭活动/子连接,如果关闭,则关闭其套接字。
  3. 如果在给定的时间段后仍有活动/子连接,请强制关闭其套接字。

基本上,您优先考虑现有的活动连接,并尝试强制关闭其中最少的连接。