代码之家  ›  专栏  ›  技术社区  ›  Sam Liao

Tcp连接挂起在关闭等待状态

  •  9
  • Sam Liao  · 技术社区  · 16 年前

    FIN -->
       <-- ACK
       <-- FIN, ACK
    ACK -->
    

    当服务器忙于发送数据时:

    FIN -->
        <-- ACK,PSH
    RST -->
    

    服务器连接将处于关闭等待状态,并在那里挂起很长时间。

    这里有什么问题?客户端相关还是服务器相关?这在本地套接字的Redhat5上发生。

    article 讨论为什么发送“RST”,但我不知道为什么服务器连接卡在CLOSE_WAIT上,并且不发送FIN。

    3 回复  |  直到 12 年前
        1
  •  2
  •   unwind    16 年前

    您可以使用 SO_LINGER Here's relevant documentation here ),和[这是Win32的匹配函数2]。

    服务器端保持打开状态,因此您可以尝试禁用服务器端 所以你留恋 .

        2
  •  0
  •   MarkR    16 年前

    这可能意味着服务器尚未关闭套接字。通过使用“lsof”列出该进程打开的文件描述符(包括TCP套接字),可以很容易地看出这一点。解决方法是让进程在完成时始终关闭套接字(即使在错误情况下)

        3
  •  0
  •   Sam Liao    16 年前

    这是众所周知的 defect 对于qemu。