- LengthFieldBasedFrameDecoder (解码)会按照参数指定的包长度偏移量数据对接收到的数据进行解码
- LengthFieldPrepender (编码) 会在响应的数据前面添加指定的字节数据,这个字节数据中保存了当前消息体的整体字节数据长度
更详细的说明:使用LengthFieldBasedFrameDecoder解码器及自定义
/** 4 偏移量解码 在解码器之前增加LengthFieldBasedFrameDecoder,用于处理半包消息,这样接受到的永远是整包消息 */
//个人觉得和分隔符的意义差不多
//maxFrameLength:指定了每个包所能传递的 "最大数据包大小" ;
//lengthFieldOffset:指定了 "长度字段" 在字节码中的 偏移量;
//lengthFieldLength:指定了'长度字段'所占用的 '字节长度';
//lengthAdjustment:对一些不仅包含有消息头和消息体的数据进行消息头的长度的调整,这样就可以只得到消息体的数据,这里的lengthAdjustment指定的就是消息头的长度;
// lengthAdjustment = 包总长度 - lengthFieldOffset - lengthFieldLength - lengthFieldLength内容长度
//initialBytesToStrip:对于长度字段在消息头中间的情况,可以通过initialBytesToStrip忽略掉消息头以及长度字段占用的字节。
pipeline.addLast(new LengthFieldBasedFrameDecoder(1024, 0, 2, 0, 2));
/** 4 在编码器之前增加2个消息的消息长度字段*/
pipeline.addLast(new LengthFieldPrepender(2));
网友评论