1.关于LengthFieldBasedFrameDecoder
LengthFieldBasedFrameDecoder是netty解决拆包粘包问题的一个重要的类,主要结构就是header+body结构。我们只需要传入正确的参数就可以发送和接收正确的数据,重点就在于这几个参数的意义。下面我们就具体了解一下这几个参数的意义。先来看一下LengthFieldBasedFrameDecoder主要的构造方法:
public LengthFieldBasedFrameDecoder(int maxFrameLength, int lengthFieldOffset, int
lengthFieldLength, int lengthAdjustment,
int initialBytesToStrip, boolean failFast)
参数含义:
- maxFrameLength:最大帧长度。也就是可以接收的数据的最大长度。如果超过,此次数据会被丢弃。
- lengthFieldOffset:长度域偏移。就是说数据开始的几个字节可能不是表示数据长度,需要后移几个字节才是长度域。
- lengthFieldLength:长度域字节数。用几个字节来表示数据长度。
- lengthAdjustment:数据长度修正。因为长度域指定的长度可以使header+body的整个长度,也可以只是body的长度。如果表示header+body的整个长度,那么我们需要修正数据长度。
- initialBytesToStrip:跳过的字节数。如果你需要接收header+body的所有数据,此值就是0,如果你只想接收body数据,那么需要跳过header所占用的字节数。
- failFast:一般选择false
下面是我们发送数据之后就收不同格式数据这几个参数的取值:
详见:https://blog.youkuaiyun.com/maosijunzi/article/details/78591667
Netty拆包粘包解决方案
本文详细解析了Netty中LengthFieldBasedFrameDecoder的工作原理,阐述了如何通过正确设置参数来解决网络通信中的拆包粘包问题。关键参数包括最大帧长度、长度域偏移、长度域字节数等,确保数据的准确收发。
1032

被折叠的 条评论
为什么被折叠?



