DelimiterBasedFrameDecoder

DelimiterBasedFrameDecoder解码器教程

DelimiterBasedFrameDecoder 意为分隔符解码器。它是按照指定分割符进行解码的解码器,通过分隔符可以将二进制流拆分成完整的数据包。回车换行解码器实际上是一种特殊的 DelimiterBasedFrameDecoder 解码器。

DelimiterBasedFrameDecoder详解

分割符解码器在实际的工作中应用很广泛,在很多公司中,他们会根据自己的业务场景定制协议的时候会以特殊的分割符作为消息结束的标识。

分割符的指定,与大家的习惯不同的是分割符并非以 Char 或者 String 作为构造参数,而是以 ByteBuf。按照分割符解码器进行解码的时候,它支持对多个分割符进行解码,在解码的时候,会找长度最小的分割符,将数据获取。它和回车符换行解码器一样,也是支持配置最大长度的,如果超过这个长度后没识别到特殊标识符,就会丢弃。

05 分割符解码器.png

按照上面的分割符解码器讲解,我们以 $_ 作为特殊字符,效果如下:

解码前: 接收到的数据: "Hello Haicoder,I am your fans.$_ 改天喝一杯" "Hello Haicoder,I am your fans.$_ 改天喝一杯" 解码后: 解码后得到的数据: "Hello Haicoder,I am your fans." "改天喝一杯Hello Haicoder,I am your fans."

如果我们以 $_*_作为特殊字符,效果如下:

解码前: 接收到的数据: "Hello Haicoder,I am your fans.$_改天喝一杯*_" 解码后: 解码后得到的数据: "Hello Haicoder,I am your fans." "改天喝一杯"

我们可以看到,和换行符效果差不多,换行符也是一个特殊的字符。将我们自定义的特殊字符作为数据截取条件。

DelimiterBasedFrameDecoder总结

DelimiterBasedFrameDecoder 是分割符解码器,它是按照指定分割符进行解码的解码器,通过分隔符可以将二进制流拆分成完整的数据包