我是netty的新手,我尝试从服务器(非netty)接收字节响应。然而,我相信我没有注意到这一点。在读取响应时,我遇到了IllegalReferenceCountException: refCnt:0
我所做的并不是那么复杂。我设置了客户端,然后发送了一条消息,正在等待响应。
我的ResponseHandler是这样的:
public class ResponseHandler extends DriverResponseHandler
{
private ByteBuf received;
@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception
{
super.handlerAdded(ctx);
received = ctx.alloc().buffer(32);
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception
{
super.channelRead(ctx, msg);
received.writeBytes((ByteBuf) msg);
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) throws Exception
{
super.channelReadComplete(ctx);
if (received.writerIndex() == received.capacity() || received.readerIndex() == received.capacity()) {
received.clear();
received = ctx.alloc().buffer(32);
}
processResponse(received);
}
}在读取channelRead中的响应时,会发生异常。为什么会发生这种情况。有人能给我解释一下吗?
发布于 2021-06-19 19:26:23
好了,我解决了这个问题。我需要做的就是添加ByteToMessageDedcoder,否则传入的响应将永远不会被分配,因此它将无法访问。
https://stackoverflow.com/questions/67985544
复制相似问题