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

本文介绍了Netty在Android开发中的应用,详细讲解了Encoder的编码作用、Decoder的解码功能以及Handler在数据处理中的核心地位。通过一个数据包格式示例,展示了如何在Encoder和Decoder中操作数据,并在Handler中处理解码后的数据。文章还提及了Handler中的关键回调方法,如channelRead0()、channelActive()等。
摘要由CSDN通过智能技术生成

来自阿钟的投稿,本文阅读大约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);
  • 对数据进行编码,将对象转成字节数组。可以注

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值