来自阿钟的投稿,本文阅读大约7分钟
一、Encoder的作用
将发送的数据进行编码成需要的数据格式,然后发送出去
二、Decoder的作用
将收到的数据根据数据协议进行解码,然后处理
三、Handler的作用
将解码好的数据进行处理
四、下面们通过一个简单的一个示例进行收发数据
定义一个传输的数据包格式
| ** 包头 ** | 命令字 | 数据长度 | 数据区 | ** 包尾** |
|:----:|:----:|:----:|:----:|:----:|
| 0x2A | 一个字节 | 一个字节 | 数据字符串 | 0x2A |
根据上面定义的数据包,便可以生成对应的数据实体类;如下:
数据实体类
1public class PkgDataBean {
2 //命令字
3 private byte cmd;
4 //数据长度
5 private byte dataLength;
6 //数据
7 private String data;
8
9 //省略get/set函数
10}
客户端发送数据就可以直接写入
PkgDataBean
对象,然后在ClientEncoder
中编码发送数据
1//获取与服务端的连接通道
2Channel channel = NettyClient.getChannel();
3PkgDataBean bean = new PkgDataBean();
4bean.setCmd((byte) 0x01);
5bean.setData(etContent.getText().toString());
6bean.setDataLength((byte) bean.getData().getBytes().length);
7//写入数据
8channel.writeAndFlush(bean);
对数据进行编码,将对象转成字节数组。可以注