服务端
首先新建一个java项目,将必要的Netty包导入到项目中完成环境搭建
示意图
服务类源码
在Netty中,每一个Channel都具有一个ChannelPipeline,负责逻辑处理的ChannelHandler都要注册在ChannelPipeline中。一个ChannelPipeline中通常含有一个编码器,一个解码器,一个负责逻辑处理的ChannelHandler
在ChannelHandler中,最低需要实现五个方法
- channelClosed 在关闭连接时调用
- channelDisconnected 在断开连接时调用
- channelConnected 在成功连接时调用
- exceptionCaught 在发生异常时调用
- messageReceived在传递信息时调用
channelClosed与channelDisconnected两个方法有何区别?
其实翻译成中文已经可以大概猜出他们的区别,我们在正常连接后再关闭的时候,会先调用channelDisconnected后调用channelClosed。可以看出,只有在已经成功建立连接之后,关闭通道才会触发后者,而channelClosed无论连接建立与否,关闭通道的时候都会调用
pack