【问题标题】:Netty Client Won't send more data after a whileNetty 客户端一段时间后不会发送更多数据
【发布时间】:2013-05-31 00:19:25
【问题描述】:

我正在编写一个应用程序,它由一个服务器和一个使用 Netty 编写的 Java 客户端组成。

我还没有找到这个问题的真正答案,但我想知道为什么我的服务器-客户端连接在一段时间后停止发送数据,如果不使用的话。 “keepAlive”选项设置为 True,并且一切正常,直到客户端有足够的时间“断开”但服务器没有收到断开状态。 只是一般好奇,keepAlive ping-pong 客户端/服务器还是我必须自己做?

谢谢!

【问题讨论】:

  • 您应该提供更多信息,例如 netty 版本,如果可能的话,您应该提供用于设置客户端和服务器的代码(引导程序和管道)。
  • 这几乎是带有管道的客户端-服务器引导程序的正常设置,带有选项“keepAlive”和“tcpNoDelay”。当您实际在它们之间发送消息时,该应用程序工作得很好,但是当您有一段时间不使用客户端时,它就不会再将消息“刷新”到服务器了。

标签: java netty


【解决方案1】:

值得一看的是,如果有一些网络设备(例如防火墙)可能关闭了您的连接,请记住,连接状态处理不在协议中。所以很可能你有一个half closed connection

如果您确实设置了keepAlive 选项,请确保它通过网络执行那些ping。最好的办法是检查连接的两端是否套接字仍然打开。

当连接处于活动状态但空闲(客户端未接收数据)时,检查连接是否处于状态ESTABLISHED。并在服务器端做同样的事情。从那里使用Wiresharktrace 等工具尝试确定连接是在服务器上断开还是被防火墙杀死。

【讨论】:

  • 测试了一下,好像没有断开,流在一段时间后就停止工作了……你有关于如何进一步测试的建议吗?
猜你喜欢
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 2017-10-26
  • 2015-04-07
  • 1970-01-01
  • 2012-04-07
相关资源
最近更新 更多