web-dev-qa-db-fra.com

Quand "Java.io.IOException: connexion réinitialisée par un homologue" est-il émis?

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)

Ce journal provient d'un serveur de jeu implémenté à l'aide de netty. Qu'est-ce qui peut causer cette exception? 

40
WorM

Java.io.IOException: connexion réinitialisée par un homologue

L’autre partie a brusquement interrompu la connexion en cours de transaction. Cela peut avoir de nombreuses causes qui ne sont pas contrôlables côté serveur. Par exemple. l'utilisateur final a décidé d'arrêter le client ou de changer le serveur brusquement tout en interagissant avec votre serveur, ou le programme client s'est bloqué, ou la connexion Internet de l'utilisateur s'est interrompue, ou la machine de l'utilisateur s'est écrasée, etc.

52
BalusC

Pour développer la réponse de BalusC, tout scénario dans lequel l'expéditeur continue à écrire après que l'homologue a arrêté de lire et a fermé son socket produira cette exception. En d'autres termes, une erreur de protocole d'application. Par exemple, si vous écrivez quelque chose que le pair ne comprend pas et que le client ferme alors son socket en signe de protestation et que vous continuez ensuite à écrire, la pile TCP du homologue émettra une RST, ce qui entraînera cette exception et message à l'expéditeur.

11
user207421

L'exception Java.io.IO dans Netty signifie que votre serveur de jeu tente d'envoyer des données à un client, mais que ce client a fermé la connexion à votre serveur.

Et cette exception n'est pas la seule! Il y en a plusieurs autres. Voir BadClientSilencer in Xitrum. J'ai dû ajouter cela pour empêcher ces erreurs de gâcher mon fichier journal.

3
Ngoc Dao

Java.io.IOException: connexion réinitialisée par un homologue

Dans mon cas, le problème était lié aux demandes PUT (les requêtes GET et POST ont été correctement transmises).

La communication passait par le tunnel VPN et la connexion SSH. Et il y avait un pare-feu avec des restrictions par défaut sur les demandes PUT ... Les demandes PUT n'ont pas été transmises au serveur ... 

Le problème a été résolu après que l'exception ait été ajoutée au pare-feu pour mon adresse IP.

0
ognjenkl