目录
- 解码器
- LineBasedFrameDecoder
- DelimiterBasedFrameDecoder
- FixedLengthFrameDecoder
- LengthFieldBasedFrameDecoder
解码器
在上一篇中介绍了Netty的解码器抽象类ByteToMessageDecoder,Netty也定义了一些常用的解码器,这些解码器都实现了ByteToMessageDecoder的抽象方法decode()
,常用的有下面四个:
- LineBasedFrameDecoder,换行解码器
- DelimiterBasedFrameDecoder,分隔符解码器
- FixedLengthFrameDecoder,定长解码器
- LengthFieldBasedFrameDecoder,长度域解码器
LineBasedFrameDecoder
换行解码器即遇到换行符则进行分割的解码器,Windowns的换行符为\r\n
,Linux为\n
,它的数据结构如下:
核心方法decode()
的源码如下:
DelimiterBasedFrameDecoder
分隔符解码器可以接受多个分隔符,使用的时候只会按照在报文中遇到的第一个分隔符进行解码,它的数据结构如下:
解码过程如下:
FixedLengthFrameDecoder
定长解码器,以固定的长度对消息进行截取的解码器,它的源码相对简单,如下:
LengthFieldBasedFrameDecoder
基于长度的消息帧解码器,可以动态分割消息,它的数据结构如下:
以Netty中例子来理解这些属性值
decode()
方法如下:
至此,Netty常用的解码器分析至此结束,感谢阅读。