首页 新闻 会员 周边

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

0
悬赏园豆:30 [待解决问题]

如题,在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进行了一些封装,所以是无法捕获的吗?

请各位有经验者不吝赐教,真心感谢各位的帮助!

响^_^的主页 响^_^ | 初学一级 | 园豆:110
提问于:2018-12-05 23:01
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册