netty 错误 #[IllegalReferenceCountException: refCnt: 0, decrement: 1]

来源:互联网 发布:数据恢复大师下载 编辑:程序博客网 时间:2024/06/05 15:04

io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1

今天写了个ping/pong的服务器和客户端玩

但是出现了以上错误

ReferenceCount(引用计数)错误,看了很久,发现每一次发送第二条消息就会报这个错误

发现第一条消息和第二条消息一样的(引用的同一个地址)

后面想到netty好像有个引用计数的东西

后面改了之后就好了,代码如下

 static class EchoClientHandler extends ChannelInboundHandlerAdapter {        private final ByteBuf firstMessage;        /**         * Creates a client-side handler.         */        public EchoClientHandler() {            firstMessage = Unpooled.buffer(EchoClient.SIZE);            firstMessage.writeBytes("ping".getBytes());        }        @Override        public void channelActive(ChannelHandlerContext ctx) {            ctx.writeAndFlush(firstMessage);        }        @Override        public void channelRead(ChannelHandlerContext ctx, Object msg) {            ByteBuf in = (ByteBuf) msg;            while (in.isReadable()) {                System.out.print((char) in.readByte());                System.out.flush();            }            System.out.println();            //之前是ctx.wirte(firstMessage)导致了错误            ByteBuf pong = Unpooled.buffer(EchoClient.SIZE);            pong.writeBytes("ping".getBytes());            ctx.write(pong);        }   }
原创粉丝点击