如题,在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进行了一些封装,所以是无法捕获的吗?
请各位有经验者不吝赐教,真心感谢各位的帮助!