【发布时间】:2013-07-01 16:17:53
【问题描述】:
我在 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**
我重新启动了我的系统,所有的孤儿都消失了。我重复了测试,发现即使在应用程序关闭后孤儿仍然存在,但在系统重新启动后消失。
也许我猜这是一些系统设置一开始就阻止它运行。?
【问题讨论】:
-
定义“关闭我的客户端和服务器”。您是否真的在每种情况下都退出了该过程?
-
@EJP by
close我的意思是我通过关闭整个 Eclipse 杀死了运行服务器的 Eclipse 实例。 -
听多久?
-
关闭 eclipse 可能还不够,因为您的程序在单独的进程中运行。你检查过你的程序真的终止了吗?
-
@VishalK 没有。没有
Timeout状态。您大概指的是TIME-WAIT状态。这个问题是关于LISTENING和ESTABLISHED状态的。这里没有证据表明任何东西都被强行终止了,除了 Eclipse,它似乎对正在运行的应用程序没有任何影响。
标签: java tcp client-server