65、Netty源码分析:解码器

目录

  • 解码器
    • LineBasedFrameDecoder
  • DelimiterBasedFrameDecoder
  • FixedLengthFrameDecoder
  • LengthFieldBasedFrameDecoder

解码器

在上一篇中介绍了Netty的解码器抽象类ByteToMessageDecoder,Netty也定义了一些常用的解码器,这些解码器都实现了ByteToMessageDecoder的抽象方法decode(),常用的有下面四个:

1、 LineBasedFrameDecoder,换行解码器;
2、 DelimiterBasedFrameDecoder,分隔符解码器;
3、 FixedLengthFrameDecoder,定长解码器;
4、 LengthFieldBasedFrameDecoder,长度域解码器;

LineBasedFrameDecoder

换行解码器即遇到换行符则进行分割的解码器,Windowns的换行符为\r\n,Linux为\n,它的数据结构如下:
*

核心方法decode()的源码如下:

*

DelimiterBasedFrameDecoder

分隔符解码器可以接受多个分隔符,使用的时候只会按照在报文中遇到的第一个分隔符进行解码,它的数据结构如下:

*

解码过程如下:

*

FixedLengthFrameDecoder

定长解码器,以固定的长度对消息进行截取的解码器,它的源码相对简单,如下:

*

LengthFieldBasedFrameDecoder

基于长度的消息帧解码器,可以动态分割消息,它的数据结构如下:
*

以Netty中例子来理解这些属性值

*

decode()方法如下:

至此,Netty常用的解码器分析至此结束,感谢阅读。
*

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: