Netty在Android开发中的应用实战系列(二)——— Encoder,Decoder,Handler 的使用

来自阿钟的投稿,本文阅读大约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);
  • 对数据进行编码,将对象转成字节数组。可以注意到这里我们将泛型直接使用的是定义的实体类

 1public class ClientEncoder extends MessageToByteEncoder<PkgDataBean> {
 2    private
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值