1

我在 java 中实现了一个客户端服务器应用程序,它工作正常。现在,如果我netstat -a在 shell 中查看活动连接,我会看到有很多以下形式的孤立连接

TCP 127.0.0.1:54725 Sin-Host:0 LISTENING

例如,如果我在端口 58185 上创建一个服务器,如下所示

TCP 127.0.0.1:58185 Sin-Host:0 LISTENING

当客户端连接到它时,我得到两个连接,如下所示

TCP 127.0.0.1:58185 Sin-Host:0 LISTENING
TCP 127.0.0.1:58185 Sin-Host:58187 ESTABLISHED
TCP 127.0.0.1:58187 Sin-Host:58185 ESTABLISHED

现在,当我关闭客户端和服务器时,第一个连接仍然存在(即处于LISTENING非状态TIMED_WAIT

我认为当我关闭客户端和服务器时,没有理由保持第一个连接。这是一个错误吗?它并没有真正影响我的程序,但我只是想知道,以便我知道它的影响。

**EDIT : How long do these orphans last**

我重新启动了我的系统,所有的孤儿都消失了。我重复了测试,发现即使在应用程序关闭后孤儿仍然存在,但在系统重新启动后消失。

也许我猜这是一些系统设置阻止它首先运行。?

4

1 回答 1

0

只要你有一条线

serverSocket.accept();

在您的代码中,与的连接LISTENING将保持不变。

accept()导致港口的状态LISTENING

两条ESTABLSHED线都用于活动连接。

于 2013-07-01T06:51:02.273 回答