我正在编写一个应用程序,该应用程序由使用 Netty 的 Java 编写的服务器和客户端组成。
我还没有找到这个问题的真正答案,但我想知道为什么我的服务器-客户端连接在不使用的情况下会在一段时间后停止发送数据。 “keepAlive”选项设置为 True,一切正常,直到经过足够的时间让客户端“断开连接”,但服务器没有收到断开连接状态。 只是一般好奇,keepAlive 是客户端/服务器乒乓还是我必须自己做?
谢谢!
最佳答案
值得一看的是,如果有一些网络设备(例如防火墙)可能关闭了您的连接,请记住连接状态处理不在协议(protocol)中。所以很可能你有一个 half closed connection .
如果您确实设置了 keepAlive
选项,请确保它正在通过网络执行那些 ping
。如果套接字仍然打开,最好的办法是检查连接的两端。
当连接处于 Activity 状态但处于空闲状态(客户端未接收数据)时,检查连接是否处于状态 ESTABLISHED
。并在服务器端做同样的事情。从那里使用 Wireshark
和 trace
等工具尝试确定连接是在服务器上断开还是被防火墙终止。
关于java - 一段时间后,Netty 客户端不会发送更多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16920619/