这是故事, 我有一个远程服务器和一个位于防火墙后面的客户端。客户端由netty实现,它将建立到远程服务器的keepalive连接。如果在200秒内没有消息在通道中传输,则防火墙将重置连接到远程服务器端的连接,但是客户端不会收到任何tcp数据包(例如RST包),因此客户端认为此连接仍然有效事实并非如此。 那么,在防火墙不能正确处理keepalive连接之前,如何强制关闭异常连接呢? 顺便说一句:我无法配置防火墙
答案 0 :(得分:2)
对于tcp连接,您应该发送一些东西来检测它是否处于活动状态或损坏。因此,我建议您执行以下操作:
让客户端定期发送心跳数据包以保持连接有效。通过执行这些操作,防火墙将使连接保持您期望的状态。
当连接断开时,发送心跳数据包后,您会立即收到错误消息。因此,您可以关闭频道或重新连接。