Netty之处理器

版权声明:士,不可以不弘毅,任重而道远 https://blog.csdn.net/superbeyone/article/details/85876207


Netty之处理器

Netty处理器重要概念:

  1. Netty的处理器可以分为两类:入站处理器出站处理器
  2. 入站处理器的顶层是ChannelInboundHandler
    出站处理器的顶层是ChannelOutboundHandler
  3. 数据处理时常用的各种编解码器本质上都是处理器
  4. 编解码器:无论我们向网络中写入的数据是什么类型(int,char,String,二进制等),数据在网络中传递时,其都是以字节流的形式呈现的;将数据由原本的形式转换为字节流的操作称为编码(encode),将数据由字节转换为它原本的格式或是其它格式的操作称为解码(decode),编解码统一称为codec
  5. 编码: 本质上是一种出站处理器;因此,编码一定是一种ChannelOutboundHandler「程序 -> 网络」
  6. 解码:本质上是一种入站处理器;因此,解码一定是一种ChannelInboundHandler「网络 -> 程序」
  7. 在Netty中,编码器通常以xxxEncoder命名;解码器通常以xxxDecoder命名;

注:

顶层接口 ChannelHandler
ChannelInboundHandlerChannelOutboundHandler均继承自ChannelHandler


Netty编解码器的重要结论:

  1. 无论是编码器还是解码器,所接收的消息类型必须要与待处理的参数类型一致,否则该编码器或解码器并不会被执行;
  2. 在解码器进行数据解码时,一定要记得判断缓冲(ByteBuf)中的数据是否足够,否则将会产生一些问题;

自定义编码器:

  • 继承MessageToByteEncoder,实现encode()方法

自定义解码器:

  • 继承ByteToMessageDecoder,实现decode()方法
  • 继承ReplayingDecoder<T>,实现decode()方法

猜你喜欢

转载自blog.csdn.net/superbeyone/article/details/85876207