LengthFieldBasedFrameDecoder
来源:互联网 发布:java中的finalize方法 编辑:程序博客网 时间:2024/05/16 17:58
常用于处理数据分包传输问题,先对构造方法LengthFieldBasedFrameDecoder中的参数做以下说明:
maxFrameLength:接受包的最大长度
lengthFieldOffset:长度属性的偏移位,即读取包长度时从lengthFieldOffset起往后读lengthFieldLength个字节表示长度
lengthFieldLength:长度属性的长度,即存放整个大数据包长度的字节所占的长度,通常为1, 2, 3, 4, or 8
lengthAdjustment:包长度的补偿值,即真实的消息长度为根据lengthFieldOffset和lengthFieldLength属性读出的长度+lengthAdjustment
initialBytesToStrip:跳过多少个字节,以便接收端直接接受到不含“长度属性”的内容,一般为(lengthFieldOffset+lengthFieldLength)个字节
failFast :默认为true,当frame长度超过maxFrameLength时立即报TooLongFrameException异常,为false,读取完整个帧再报异常
下面实例演示:
1、包的长度为4个字节,解码后的消息包含长度属性
new LengthFieldBasedFrameDecoder(1024, 0, 4, 0, 0, false)
解码前解码后
长度+具体内容 长度+具体内容
[0, 0, 0, 5, 104, 101, 108, 108, 111][0, 0, 0, 5, 104, 101, 108, 108, 111]
2、包的长度为4个字节,解码后的消息不包含长度
new LengthFieldBasedFrameDecoder(1024, 0, 4, 0, 4, false)
解码前解码后
长度+具体内容 长度+具体内容
[0, 0, 0, 5, 104, 101, 108, 108, 111] [104, 101, 108, 108, 111]
3、lengthFieldOffset为1,解码后的消息不包含长度
new LengthFieldBasedFrameDecoder(1024, 1, 4, 0, 5, false)
解码前解码后
长度+具体内容 长度+具体内容
[1, 0, 0, 0, 5, 104, 101, 108, 108, 111] [104, 101, 108, 108, 111]
lengthFieldOffset为1,即消息内容的长度从第2个字节读,长度为5。initialBytesToStrip为获取去除前面5个字节的消息,即最后的消息内容为[104, 101, 108, 108, 111]
4、lengthAdjustment为1,解码后的消息不包含长度
new LengthFieldBasedFrameDecoder(1024, 0, 4, 1, 4, false)
解码前解码后
长度+具体内容 长度+具体内容
[0, 0, 0, 4, 104, 101, 108, 108, 111] [104, 101, 108, 108, 111]
读取前4个字节,消息的长度为4。因为lengthAdjustment为1,即消息内容的实际长度为4+1=5个字节,读取后5个字节为最后解码后的消息
- LengthFieldBasedFrameDecoder
- Netty LengthFieldBasedFrameDecoder
- Netty LengthFieldBasedFrameDecoder
- Netty LengthFieldBasedFrameDecoder
- LengthFieldPrepender和LengthFieldBasedFrameDecoder
- LengthFieldBasedFrameDecoder使用示例
- LengthFieldBasedFrameDecoder和LengthFieldPrepender
- Netty——LengthFieldBasedFrameDecoder
- Netty的LengthFieldBasedFrameDecoder使用
- netty LengthFieldBasedFrameDecoder 使用实例
- netty中LengthFieldBasedFrameDecoder的使用
- netty中LengthFieldBasedFrameDecoder的使用
- netty中LengthFieldBasedFrameDecoder的使用
- netty中LengthFieldBasedFrameDecoder的使用
- Netty学习(六)-LengthFieldBasedFrameDecoder解码器
- netty源码分析之LengthFieldBasedFrameDecoder
- Netty LengthFieldBasedFrameDecoder使用场景分析
- netty源码分析之FrameDecoder(LengthFieldBasedFrameDecoder)
- Windows 7 虚拟串口 VSPD 6
- 用户级线程和内核级线程
- 《鸟哥的Linux私房菜》读书笔记9——文件系统错误与硬盘坏轨的处理
- 当android调试遇到ADB server didn't ACK以及顽固的sjk_daemon进程
- JVM基础知识与配置
- LengthFieldBasedFrameDecoder
- 凑硬币
- TinyXML2读取和创建XML文件
- 在iOS8.0之后的UIAlertView和UIActionSheet的新写法
- C++ while()括号里的原理
- 【转载】Java学习之 多态 Polymorphism
- 非常好的理解遗传算法的例子
- POJ 3461--Oulipo【KMP】
- Android注册短信验证码功能