不断的推翻,不断的质问,才能最贴近事实
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:192)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
at io.netty.buffer.PooledUnsafeDirectByteBuf.setBytes(PooledUnsafeDirectByteBuf.java:288)
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1125)
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:347)
错误的根本原因在于重连机制+没有关闭Channel;
你的根本原因在于对netty框架读写处理器运行原理的不清楚;
如果你是长连接的话,并且在channelActive(ChannelHandlerContext ctx)方法里面设置了定时器或者其他执行时间超过2min的代码,最后一个要执行的读或者写处理器执行完没有关闭ctx.close();就会报错
对比一下图,看看自己是哪里没有理解,一般这个错误要么是自己代码有问题,要么是客户端关闭了;