基于分隔符的协议
使用定义的只读来标记消息或者消息段的开头或者结尾,常见的协议有 SMTP POP3等
常见的对应的解码器如下
对于LineBasedFrameDecoder的解码过程,可以如下
对于处理流程如下
我们简单的扩展一下DelimiterBasedFrameDecoder,完成我们自己的扩展方式
我们定义了一种数据结构Cmd
里面包含两个ByteBuf,分别是name和args
然后是如何去解析成为这个CMD数据格式
然后是基于长度的协议
更为简单,根据一定的长度进行定义帧,Netty提供了对应的处理这种类型的协议的解码器
对应的解析手段如下
LengthFieldBasedFrameDecoder可以从头部读取并确定帧长,然后进行读取
LengthFieldBasedFrameDecoder提供了几个构造函数来支持各种头部配置情况
常见的构造参数分别为maxFrameLenght lengthFieldOffset lengthFieldLength
帧最大长度 字节起始偏移 头帧的大小
帧的长度被编码到了帧起始的前几个字节中
从前8个字节获取到帧长度