包头添加总包长度字节:LengthFieldPrepender

https://blog.csdn.net/weixin_37910453/article/details/86986506?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
在发布时,自动在帧的头部加上长度
参数说明:

  • lengthFieldLength:长度属性的字节长度
  • lengthIncludesLengthFieldLength:false,长度字节不算在总长度中,true,算到总长度中

官方说明

  1. 编码类,自动将
  2. +----------------+
  3. | "HELLO, WORLD" |
  4. +----------------+
  5. 格式的数据转换成如下格式的数据,
  6. +--------+----------------+
  7. + 0x000C | "HELLO, WORLD" |
  8. +--------+----------------+
  9. 如果lengthIncludesLengthFieldLength设置为true,则编码为(多了两个字节)
  10. +--------+----------------+
  11. + 0x000E | "HELLO, WORLD" |
  12. +--------+----------------+

LengthFieldBasedFrameDecoder

参数说明

  • maxFrameLength:解码的帧的最大长度
  • lengthFieldOffset:长度属性的起始位(偏移位),包中存放有整个大数据包长度的字节,这段字节的其实位置
  • lengthFieldLength:长度属性的长度,即存放整个大数据包长度的字节所占的长度
  • lengthAdjustmen:长度调节值,在总长被定义为包含包头长度时,修正信息长度。
  • initialBytesToStrip:跳过的字节数,根据需要我们跳过lengthFieldLength个字节,以便接收端直接接受到不含“长度属性”的内容
  • failFast :为true,当frame长度超过maxFrameLength时立即报TooLongFrameException异常,为false,读取完整个帧再报异常