五、Netty 教程 – 解码器详解
作者:唐亚峰 | 出自:唐亚峰博客
> TCP以流的形式传输,在上一章,我们讲了粘包和拆包,以及LineBaseFrameDecoder使用和源码探讨,接下来讲讲Netty为我们实现的其它解码器…..
TCP以流的方式进行数据传输,上层的应用为了对消息进行区分,往往采用如下方式
- 固定消息长度,累计读取到长度和定长LEN的报文后,就认为读取到了个完整的消息,然后将计数器位置重置在读取下一个报文内容
- 将回车换行符作为消息结束符\r\n,列如FTP协议,这种方式在文本中应用比较广泛
- 将特殊分隔符作为消息结束符标志位,回车换行符就是一个特殊结束分隔符(DelimiterBasedFrameDecoder)
- 通过在消息头定义一个长度字段来标示消息的总长度(FixedLengthFrameDecoder)
Netty对以上4种做个统一抽象封装,提供了四种不同解码器来解决对应问题,使用起来也非常的方便,了解了它们,我们就不需要自己对读取的报文人工解码,也不需要考虑TCP粘包和拆包的问题了…