netty接收超长报文

hengsir 发布于 2021/05/24 12:17
阅读 583
收藏 2

如何使用英特尔®oneAPI工具实现PyTorch 优化,直播火热报名中>>>

    报文示例:0000005697{json..........}

    前10位为json报文的长度,不足10位补0,json中有的字段会很长的base64编码,服务我用StringDecoder会有分包现象,这会导致报文未读取完就到channelRead0()中。现想通过自定义解码器处理分包的问题。客户端不是netty写的,可能是C或者别的。

    我在尝试编写解析器时遇到的问题:

        1、前10位的长度我要用ByteBuf的什么方法可以读取出来?

        2、当解析到长度 > ByteBuf可读的长度时,如何保存已读取的并且等到下一个数据包过来接着读取剩下长度?

以下是问题补充:

@hengsir:报文格式由客户端规定,前10位表示报文长度,不足10位左边补0;后面为json (2021/05/25 11:25)
加载中
0
ville
ville

采用byte吧

0
kakai
kakai

报文长度用int不行?4个字节而已,比你用10个长度的字符串好多了吧

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部