netty自定义编解码器解决黏包半包问题

netty自定义编解码器解决黏包半包问题

尽意
2024-05-12 / 0 评论 / 34 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年05月12日,已超过255天没有更新,若内容或图片失效,请留言反馈。

netty自定义消息体,编码跟解码是相对应的关系,比如编码使用,四个字节的魔数,一字节的版本,一字节的序列化方式,四字节的javabean对象序列化的长度,javabean序列化的内容。
那么解码也是按照自定义的字节数拿到数据,前面10个字节都是固定的,只有javabean序列化的内容是不固定的。
所以解码必然会有黏包半包问题,假设第一次消息有100个字节,javabean对象序列化的长度为120,那么读取数据是不全的,也就是半包。
解决方案,
使用netty官方的handel,new LengthFieldBasedFrameDecoder(),帧解码器。
当缓存的消息主题不够时,不会将消息向下传递,等待完整的数据才向下传递交给解码器解码。

1

评论 (0)

取消