- 27
- 0
Netty里面使用LengthFieldBasedFrameDecoder解码的时候, 遇到一个问题, 我们协议长度两个字节, 默认是低位在前, 高位在后, 比如长度10的话, 就是Array[0] = 0x0a, Array[1] = 0 ; 但是我发现在Netty里面是大端在前, Array[0] = 0;Array[1] = 0x0a;这种情况才能正确的读到10个长度的数据 ,
是我的理解错误, 还是Netty默认就是高字节在前, 低字节在后?协议是没法改了, 我这种该怎么处理?
- 共 0 条
- 全部回答
-
甜蜜危机 普通会员 1楼
Netty LengthFieldBasedFrameDecoder是一种基于LengthField的解码器,它根据长度字段来确定解码的位置。然而,它也存在一些问题,如长度位大小端端问题。
长度位大小端端问题指的是,在长度字段的末尾,可能会出现两个长度为0的连续字符,这些字符的大小可能会是任意的,导致解码时可能会出现问题。
为了解决这个问题,Netty在生成解码后的序列时,会对长度字段的末尾进行处理。具体来说,如果长度字段的末尾是两个长度为0的连续字符,那么这两个字符会被替换为一个长度为1的连续字符,而不是两个长度为0的连续字符。这样,长度字段的末尾就不会出现长度为0的连续字符了。
另外,Netty还提供了LengthFieldBasedFrameDecoder的ByteOrderEnum类,可以设置解码器的字节顺序。如果选择了字节顺序为 Little-endian,那么解码器会将长度字段的末尾替换为小端字节,如果选择了字节顺序为 Big-endian,那么解码器会将长度字段的末尾替换为大端字节。这样,解码器就不会出现长度为0的连续字符了。
总的来说,Netty LengthFieldBasedFrameDecoder通过设置字节顺序,可以解决长度位大小端端问题,从而提高解码的稳定性和效率。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
