Eclipse
Netty5.0
修改客户度和服务端工程的pom.xml文件,引入 Marshalling 的相关依赖图1示:服务端工程引入 Marshalling 的相关依赖图2示:同样,客户端工程引入 Marshalling 的相关依赖(和服务端相同)
客户端和服务端分别创建Marshalling编码器和解码器构建类图1示:服务端工程创建Marshalling序列化工具类,并编写对象的编解码方法图2示:同理,客户端工程创建Marshalling序列化工具类(和服务端相同),并编写对象的编解码方法
客户端和服务端分别创建请求消息类和响应消息类图1示:服务端工程创建请求消息类,服务端会接受客户端发送的该请求类对象图2示:服务端工程创建响应消息类,服务端会将该响应类对象发送到客户端图3示:同理,将上述两个类完整拷贝到客户端即可,客户端会创建请求类对象并发送给服务端,并接受服务端发送的响应类对象
服务端添加对象编解码事件处理器并修改自定义事件处理器图1示:服务端在事件处理责任链中添加Marshalling相关的编解码对象,他们均继承了 ChannelHandlerAdapter 类。图2示:服务端自定义事件处理器接收的数据就是自定义的请求消息类对象,并构建发送自定义的响应消息类对象。
客户端添加对象编解码事件处理器并修改自定义事件处理器图1示:客户端的Netty事件处理责任链中添加Marshalling相关的编解码对象图2示:客户端自定义事件处理器中接受的服务端响应事件是自定义的响应消息类对象
修改客户端主方法中的发送消息部分图示,客户端主方法中不再从控制台接受用户输入数据进行发送,而是直接构建一个自定义请求消息类对象,并发送给服务端。
分别启动服务端和客户端进行测试图1示:服务端控制台的输出图2示:客户端控制台的输出
步骤总结1. 创建用于构建 Marshalling 编解码器对象的工具类2. 创建自定义的请求类和响应类,均需要实现 Serializable 接口3. 在服务端和客户端的事件处理责任链中添加 Marshalling 的编解码器对象,两者均继承了 ChannelHandlerAdapter 类