为了账号安全,请及时绑定邮箱和手机立即绑定

Netty使用keepAlive(不是IdleState机制),如何捕获对方不再应答KeepAlive的异常?

Netty使用keepAlive(不是IdleState机制),如何捕获对方不再应答KeepAlive的异常?

慕容6258837 2018-12-05 23:09:39
如题,在netty中,设置了channelOption中的keepAlive属性为true,如果不用IdleState机制,而是通过修改windows的注册表,实现了keepAlive时间和发包间隔的修改后,比如10秒检测到链路空闲,则服务器向该客户端开始发起keepAlive包,如果连续5次客户端都没有应答,则认为客户端已经断开连接,需要进一步处理。但是5次keepAlive都没有应答,这个现象本身时通过什么来捕获的呢?1)已经尝试了重写了exceptionCaught函数,但是抓包看客户端已经不在线,而且keepAlive包已经连续发5次没有应答,但是并没有捕获到此异常。2)查资料得知C语言的keepAlive是可以通过socket的read函数的返回值比如-1来获知此异常,而netty中的channelRead没有对接收状态的判断和返回,而channelRead内部调用的messageReceive函数呢?3)或者,因为netty对原生socket进行了一些封装,所以是无法捕获的吗?请各位有经验者不吝赐教,真心感谢各位的帮助!
查看完整描述

1 回答

  • 1 回答
  • 1 关注
  • 2114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信