其他分享
首页 > 其他分享> > 【Netty报错:】XXXDecoder.decode() did not read anything but decoded a message.

【Netty报错:】XXXDecoder.decode() did not read anything but decoded a message.

作者:互联网

Netty解码器报错:XXXDecoder.decode() did not read anything but decoded a message.

从字面意思来看,就是说没有读取任何数据,但是却解析出来了一个对象。
在这里插入图片描述

1、问题引出

在写自定义的基于String的解码器的时候,在使用该解码器进行解码的时候会抛出这个异常。

2、ByteToMessageDecoder源码解析

当有数据到来的时候,会调用handler的channelRead方法,代码逻辑很简单大概分为三步:

那么为什么会进这个if呢?看自定义的解码器,只是单纯的将byteBuf转换成了一个String,byteBuf的readIndex并没有任何移动,因此byteBuf可读的字节数量在解析前后是相等的。

3、问题解决

知道了异常抛出的原因,这下解决它还是很简单的,只需要让byteBuf的readindex索引随读取的数据向前移动即可,因此可以有两种解决方式:

标签:Netty,读取,anything,对象,解码器,报错,byteBuf,解析,字节
来源: https://blog.csdn.net/weixin_43213517/article/details/110111326