netty的LengthFieldBasedFrameDecoder参数解释

本文深入解析LengthFieldBasedFrameDecoder的五个关键参数:maxFrameLength、lengthFieldOffset、lengthFieldLength、lengthAdjustment与initialBytesToStrip,通过实例说明各参数的作用及配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

这个参数这里网上找了很多的资料,说的都不够详细,最终自己试出来了,下面用通俗一点的描述解释一下

 

内容

  • maxFrameLength:最大帧长度。也就是可以接收的数据的最大长度。如果超过,此次数据会被丢弃。
  • lengthFieldOffset:长度域偏移。就是说数据开始的几个字节可能不是表示数据长度,需要后移几个字节才是长度域。
  • lengthFieldLength:长度域字节数。用几个字节来表示数据长度。
  • lengthAdjustment:数据长度修正。因为长度域指定的长度可以使header+body的整个长度,也可以只是body的长度。如果表示header+body的整个长度,那么我们需要修正数据长度。
  • initialBytesToStrip:跳过的字节数。如果你需要接收header+body的所有数据,此值就是0,如果你只想接收body数据,那么需要跳过header所占用的字节数。

举个例子

帧头

长度

命令ID

参数

Crc16

0xFA

 Len

 Cmd

xxxx

Crc16

FA 05 A6 DB D2

对于这个例子,LengthFieldBasedFrameDecoder(100,1,1,-2,0)

重点是第四个参数,之所以是负数是因为数据包读到第二个长度05才知道总长度,已经读了2个byte了,后面需要减去这个2,才是最终的数据包长度,所以第四个参数应该是-2

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值