gpt4 book ai didi

java - 关闭客户端和服务器后孤立的 TCP 连接

转载 作者:可可西里 更新时间:2023-11-01 02:54:44 26 4
gpt4 key购买 nike

我用 Java 实现了一个客户端服务器应用程序,它运行良好。现在,如果我在 shell 中执行 netstat -a 来查看 Activity 连接,我会看到有很多以下形式的孤立连接

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**

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

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

最佳答案

只要你有这样一行

serverSocket.accept();

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

accept() 导致端口的LISTENING 状态。

两条 ESTABLSHED 行都用于 Activity 连接。

关于java - 关闭客户端和服务器后孤立的 TCP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17398618/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com