Eclipse
Netty5.0
Maven工程pom.xml文件添加相关依赖图示,工程 pom 文件中添加 netty-codec-http 的依赖,客户端和服务端两个工程均需要添加
服务端工程添加Netty内置的定长解码处理器和字符串解码处理器图示,在设置事件处理器责任链时,引入 Netty 内置的定长解码处理器 FixedLengthFrameDecoder 和 字符串解码处理器 StringDecoder ,前者用于处理粘包和半包读写的问题,后者主要用于简化自定义处理器中的代码开发。
修改服务端自定义事件处理器图示,因为我们引入了字符串解码处理器,所以自定义事件处理器中 channelRead 方法接受到的数据就直接是字符串类型了,而不是原生的 ByteBuf 类型,并且因为定长解码处理器配置的消息长度为6个字节,因此客户端断开连接的命令由 exit 改为 exitit
客户端工程添加Netty内置的定长解码处理器和字符串解码处理器,并修改客户端自定义事件处理类图1示:和服务端工程的修改类似,我们在配置客户端事件处理器责任链时,添加Netty内置的定长解码处理器 FixedLengthFrameDecoder 和 字符串解码处理器 StringDecoder图2示:因为使用了字符串界面处理器,自定义事件处理类的 channelRead 方法需要进行相应修改
分别启动服务端和客户端,进行通信测试图示,客户端向服务端发送了11个字节,因为我们服务端设置的定长消息是6个字节,因此服务端只收到了前6个字节,后面5个字节因为被认为消息未接受完整,而不被处理。
客户端再次发送一个字节,进行测试图示,客户端再次发送一个字节,服务端收到后,拼接到上步骤缓冲区保留的5个字节,共计6个字节,满足消息长度,进行处理响应