我同时在不同的机器上的RHEL 5.3上运行TCP客户端和TCP服务器。TCP连接 - 延迟关闭()和RST
我在查杀服务器,FIN发送给客户端。 ACK由客户端OS立即返回。
客户端发现的关闭(由读()返回零)和perfroms只有后90秒关闭。 在这个阶段,我在两边都验证了netstat,它和预期的一样(服务器上的FIN_WAIT_2和客户端上的CLOSE_WAIT)。
由于客户端的close()90秒后,客户机的操作系统发送FIN到服务器,但在响应我们从服务器接收RST和不按预期ACK。
我也看到了几次,由于“延迟”close(),客户端的操作系统发送RST而不是FIN。
请注意,在这两种情况下有双方没有未决读取数据包,SO_LINGER选项没有被激活。
任何想法?
如果你杀死的服务器,还有的将是一个未决诉讼/包 - 关闭()从客户端将无法达到你的服务器程序。 – nos 2010-07-20 11:04:16