基于分隔符的协议

使用定义的只读来标记消息或者消息段的开头或者结尾,常见的协议有 SMTP POP3等

常见的对应的解码器如下

图片

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

图片

对于处理流程如下

图片

我们简单的扩展一下DelimiterBasedFrameDecoder,完成我们自己的扩展方式

我们定义了一种数据结构Cmd

里面包含两个ByteBuf,分别是name和args

图片

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

图片

然后是基于长度的协议

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

图片

对应的解析手段如下

图片

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

图片

LengthFieldBasedFrameDecoder提供了几个构造函数来支持各种头部配置情况

常见的构造参数分别为maxFrameLenght lengthFieldOffset lengthFieldLength

帧最大长度 字节起始偏移 头帧的大小

帧的长度被编码到了帧起始的前几个字节中

图片

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

发表评论

邮箱地址不会被公开。 必填项已用*标注