本文介绍了通道处理程序中的通道非活动与关闭和断开之间的区别是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Channel处理程序中的Channel Inactive事件与Close和Disconnect事件有什么不同?
如果手动关闭通道,则是否会调用Channel处理程序中的所有三个方法?
如果通道因网络错误而关闭,是否会调用通道处理程序中的所有三个方法?
我想知道,如果我只实现Channel elInactive方法,是否也覆盖了所有的关闭和断开事件?我的意思是,通道停用方法比其他方法更好吗?
推荐答案
区别在于disconnect
和close
是出站的,这也是它们在ChannelOutboundHandler
中定义的原因,而channelInactive
是入站的,因此在ChannelInboundHandler
中定义。
Channel.*
、ChannelHandlerContext.*
方法显式触发的事件,例如:"我想关闭通道"。然后,用户可以拦截这些内容并执行某些操作,如延迟关闭等。入站事件由传输本身触发(因此EventLoop
),通常会告诉您发生了一些事情(这可能是因为您请求了它或远程对等方这样做了)。
disconnect
和close
之间的差异取决于传输本身,例如,使用TCP
时没有差异,而使用UDP
时有差异。
这篇关于通道处理程序中的通道非活动与关闭和断开之间的区别是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!