java - Netty - 关闭客户端的套接字是否会关闭服务器的 channel

标签 java sockets netty

我的TCP服务器是使用Netty实现的。我的客户端使用普通 java.net.Socket 连接到该服务器。我使用同一个套接字向服务器发送多个请求。完成所有请求后,客户端调用 socket.close()

我不会在服务器代码中的任何地方关闭 channel 。另外,我在我的服务器上设置了 TCP KEEP_ALIVE。关闭客户端上的套接字会自动关闭服务器上的 channel 还是我必须明确地执行其他操作以及最佳实践是什么?

最佳答案

通常,如果应用程序关闭套接字,其远程对等方也会注意到该关闭。因此,您不需要在双方都调用 close() 。但是,有时,由于网络问题,当远程对等方关闭连接时,您可能不会收到通知。要解决此问题,最好定期发送一些消息,然后您就会更快地检测到意外关闭。

请注意,SO_KEEP_ALIVE 在这里没有多大帮助,因为对于大多数操作系统来说,默认的保持 Activity 时间非常长。

关于java - Netty - 关闭客户端的套接字是否会关闭服务器的 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9945122/

相关文章:

java - H2 - 多个应用程序访问同一个 H2 数据库

java - java中的虚拟磁盘空间预留

java - 变量名无法解析为变量 - 我找不到问题所在

c - 套接字:连接被拒绝

java - Netty客户端多个请求

java - 使用 System.currentTimeMillis() 了解 while 循环终止

node.js - socket.io - 当用户连接或断开连接时打印消息

php - 如何从 php 连接到 unix 套接字

java - 在锁定 tomcat 临时文件夹的情况下配置 Glowroot 显示以下异常

java - Netty似乎忽略了编码