java - 由服务器发起的 TCP 连接关闭是否有利?

标签 java sockets tcp

根据tcp协议(protocol),当tcp连接终止时,发起方的tcp套接字在连接完全关闭之前会进入以下状态FIN-WAIT-1,FIN-WAIT-2,TIME-WAIT,而其他方的tcp套接字会进入以下状态:FIN-WAIT-1,FIN-WAIT-2,TIME-WAIT end 在连接完全关闭之前进入以下状态 CLOSE-WAIT、LAST-ACK、CLOSED。 在我们的应用程序中,服务器正在启动连接终止,这导致服务器端套接字在 FIN_WAIT2 状态下无限等待,因为客户端建立的连接由于端口不可用而被服务器丢弃。 客户端发起的连接终止是否有利?

最佳答案

从客户端发起终止可能是有利的,因为它可以防止服务器进入 TIME_WAIT。您的问题有所不同。

FIN_WAIT2 中的套接字是“半打开”的:客户端仍然可以发送数据并且您可以读取数据,但无法发回任何数据。套接字将保持此状态,直到客户端关闭其套接字或服务器重置连接。

所以听起来您的客户根本没有关闭其一侧的连接。

关于java - 由服务器发起的 TCP 连接关闭是否有利?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20393271/

相关文章:

java - Android 通过点击按钮停止循环

java - 为什么 Solrj SolrDocumentList (SolrDocument) 将数据项保存为数组 (ArrayList<>)

c++ - boost::asio::async_read 在换行符上返回文件结尾错误

java - 如何检查连接池是否在 java 中工作?

c++ - NtDeviceIoControlFile(查询 IP 地址条目)- STATUS_INVALID_DEVICE_REQUEST

java - hibernate/spring jpa 中是否有任何设置来应对 Hibernate 和 Spring JPA 的连接失败和重新连接

java - 帮助解决 Java 中的字符串相等问题

python - 如果其中一个是使用 Popen 启动的,为什么两个 Python 脚本之间的套接字连接会中断?

c - 从套接字 C HTTP 读取

c - Linux下C语言生成Socket及wireshark检测frame错误