栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Netty的编解码器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Netty的编解码器

Netty常用编解码器

Netty 常用编码器

MessageToByteEncoder 对象编码成字节流

MessageToMessageEncoder 一种消息类型编码成另外一种消息类型

Netty 常用解码器

ByteToMessageDecoder/ReplayingDecoder 将字节流解码为消息对象

MessageToMessageDecoder 将一种消息类型解码为另外一种消息类型

编解码器可以分为一次解码器和二次解码器,一次解码器用于解决 TCP 拆包/粘包问题,按协议解析后得到的字节数据。如果你需要对解析后的字节数据做对象模型的转换,这时候便需要用到二次解码器,同理编码器的过程是反过来的。

一次编解码器:MessageToByteEncoder/ByteToMessageDecoder。

二次编解码器:MessageToMessageEncoder/MessageToMessageDecoder

一次编解码器解决拆包/粘包问题,二次编解码器主要用于序列化。两次编/解码可以合并成一个,但是从分层和耦合性角度来说不推荐这样做。

固定长度解码器FixedLengthframeDecoder

通过构造函数设置固定长度的大小 frameLength,无论接收方一次获取多大的数据,都会严格按照 frameLength 进行解码。如果累积读取到长度大小为 frameLength 的消息,那么解码器认为已经获取到了一个完整的消息。如果消息长度小于 frameLength,FixedLengthframeDecoder 解码器会一直等后续数据包的到达,直至获得完整的消息。

特殊分隔符解码器DelimiterbasedframeDecoder

delimiters 指定特殊分隔符,通过写入 ByteBuf 作为参数传入。delimiters 的类型是 ByteBuf 数组,所以我们可以同时指定多个分隔符,但是最终会选择长度最短的分隔符进行消息拆分。

maxLength 是报文最大长度的限制。如果超过 maxLength 还没有检测到指定分隔符,将会抛出 TooLongframeException。可以说 maxLength 是对程序在极端情况下的一种保护措施。

failFast 与 maxLength 需要搭配使用,通过设置 failFast 可以控制抛出 TooLongframeException 的时机,可以说 Netty 在细节上考虑得面面俱到。如果 failFast=true,那么在超出 maxLength 会立即抛出 TooLongframeException,不再继续进行解码。如果 failFast=false,那么会等到解码出一个完整的消息后才会抛出 TooLongframeException。

stripDelimiter 的作用是判断解码后得到的消息是否去除分隔符。如果 stripDelimiter=false,特定分隔符为 n

长度域解码器LengthFieldbasedframeDecoder(推荐)

长度域解码器 LengthFieldbasedframeDecoder 是解决 TCP 拆包/粘包问题最常用的解码器

maxframeLength 报文最大限制长度

lengthFieldOffset 长度字段的偏移量,也就是存放长度数据的起始位置

lengthFieldLength 长度字段所占用的字节数

lengthFieldEndOffset 长度字段结束的偏移量,lengthFieldEndOffset = lengthFieldOffset + lengthFieldLength

lengthAdjustment 消息长度的修正值,lengthAdjustment = 包体的长度值 - 长度域的值

initialBytesToStrip 解码后需要跳过的初始字节数,也就是消息内容字段的起始位置

failFast 是否立即抛出 TooLongframeException,与 maxframeLength 搭配使用

discardingTooLongframe 是否处于丢弃模式

tooLongframeLength 需要丢弃的字节数

bytesToDiscard 累计丢弃的字节数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号