什么时候抛出"java.io.IOException:Connection reset by peer"?

Wor*_*orM 49 java tcp ioexception netty

ERROR GServerHandler  - java.io.IOException: Connection reset by peer
java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcher.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(Unknown Source)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
        at sun.nio.ch.IOUtil.read(Unknown Source)
        at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
        at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282)
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

该日志来自使用netty实现的游戏服务器.什么可以导致这个例外?

Bal*_*usC 63

java.io.IOException:由peer重置连接

另一方在交易中突然中止了连接.这可能有许多原因无法从服务器端控制.例如,最终用户决定关闭客户端或突然更改服务器,同时仍与服务器交互,或客户端程序崩溃,或最终用户的Internet连接中断,或最终用户的计算机崩溃等等.


use*_*421 13

为了扩展BalusC的答案,在对等体停止读取并关闭其套接字之后发送者继续写入的任何情况都将产生此异常.换句话说,应用程序协议错误.例如,如果你向对等体写了一些对等体不理解的东西,然后它关闭了它的套接字以抗议,然后你继续写,对等体的TCP栈将发出一个RST,这会导致这个异常和消息在发件人.