netty(二)LengthFieldBasedFrameDecoder解码器的详情

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.csdn.net/maosijunzi/article/details/78591667

猜你喜欢

转载自blog.csdn.net/ycllycll/article/details/92060758