65、Netty源码分析:解码器

本文深入解析Netty中四种核心解码器:LineBasedFrameDecoder(换行解码器)、DelimiterBasedFrameDecoder(分隔符解码器)、FixedLengthFrameDecoder(定长解码器)和LengthFieldBasedFrameDecoder(长度域解码器),详细介绍了它们的工作原理、数据结构及decode方法源码,帮助开发者掌握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常用的解码器分析至此结束,感谢阅读。
 

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