基于分隔符的协议
使用定义的只读来标记消息或者消息段的开头或者结尾,常见的协议有 SMTP POP3等
常见的对应的解码器如下

对于LineBasedFrameDecoder的解码过程,可以如下

对于处理流程如下

我们简单的扩展一下DelimiterBasedFrameDecoder,完成我们自己的扩展方式
我们定义了一种数据结构Cmd
里面包含两个ByteBuf,分别是name和args

然后是如何去解析成为这个CMD数据格式

然后是基于长度的协议
更为简单,根据一定的长度进行定义帧,Netty提供了对应的处理这种类型的协议的解码器

对应的解析手段如下

LengthFieldBasedFrameDecoder可以从头部读取并确定帧长,然后进行读取

LengthFieldBasedFrameDecoder提供了几个构造函数来支持各种头部配置情况
常见的构造参数分别为maxFrameLenght lengthFieldOffset lengthFieldLength
帧最大长度 字节起始偏移 头帧的大小
帧的长度被编码到了帧起始的前几个字节中

从前8个字节获取到帧长度