Netty 如何解决拆包粘包?

相比粘包,拆包问题比较简单,用户可以自己定义自己的编码器进行处理,Netty 并没有提供相应的组件。对于粘包的问题,代码比较繁琐,Netty 提供了 4 种解码器来解决,分别如下:

  • 固定长度的拆包器(FixedLengthFrameDecoder),每个应用层数据包的都拆分成都是固定长度的大小;
  • 行拆包器(LineBasedFrameDecoder),每个应用层数据包都以换行符作为分隔符,进行分割拆分;
  • 分隔符拆包器(DelimiterBasedFrameDecoder),每个应用层数据包,都通过自定义的分隔符,进行分割拆分;
  • 基于数据包长度的拆包器(LengthFieldBasedFrameDecoder),将应用层数据包的长度,作为接收端应用层数据包的拆分依据。按照应用层数据包的大小,拆包。这个拆包器,有一个要求,就是应用层协议中包含数据包的长度。

发表评论

后才能评论