我在java中实现了一个客户端服务器应用程序,它工作正常。现在,如果我在shell中执行netstat -a
以查看活动连接,我会看到以下表单中有很多孤立连接
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**
我重启了我的系统,所有的孤儿都没了。我重复了测试,发现即使应用程序关闭后孤儿仍然存在,但在系统重启后就会消失。
也许我猜这是一些阻止它首先进入的系统设置。
答案 0 :(得分:0)
只要你有像
这样的行serverSocket.accept();
在您的代码中,与LISTENING
的连接将保留。
accept()
会导致端口的LISTENING
状态。
两个ESTABLSHED
行都用于活动连接。