IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

Socket Exception: Write error exception


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Socket Exception: Write error exception
    Bonjour,

    j'ai ecrit un code qui permet de generer des communications client/serveur en utilisant les sockets en java,et en ecrivant
    des "writeObject" dans le "if" ça declenche cette exception; le code marchait sans le if:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exception in thread "main" java.net.SocketException: Connection reset by peer: socket write error
    	at java.net.SocketOutputStream.socketWrite0(Native Method)
    	at java.net.SocketOutputStream.socketWrite(Unknown Source)
    	at java.net.SocketOutputStream.write(Unknown Source)
    	at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
    	at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source)
    	at java.io.ObjectOutputStream.writeNonProxyDesc(Unknown Source)
    	at java.io.ObjectOutputStream.writeClassDesc(Unknown Source)
    	at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    	at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
    	at java.io.ObjectOutputStream.writeObject(Unknown Source)
    	at Tp02.C1.main(C1.java:28)
    voila le code C1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class C1 {
     
    	public static void main(String[] args) throws Exception {
    		// TODO Auto-generated method stub
    Socket s=new Socket("localhost",15);
    Scanner e=new Scanner(System.in);
    ObjectOutputStream o1=new ObjectOutputStream(s.getOutputStream());
    System.out.println("entrer un entier entre o et 2");
    int n =e.nextInt();
     
    if(n==0){
    	String nombre=Integer.toString(n);
    o1.writeObject(nombre);
    System.out.println("entrer un maticule");
    	String mat=e.next();
    	ObjectOutputStream o=new ObjectOutputStream(s.getOutputStream());
    o.writeObject(mat);
    System.out.println("entrer un nom");
    String nom=e.next();
    o.writeObject(nom);
    System.out.println("entrer un prenom");
    String prenom=e.next();
    o.writeObject(prenom);
    	}
    	}
    le code c2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class C2 {
     
    	public static void main(String[] args) throws Exception {
    		// TODO Auto-generated method stub
    ServerSocket s=new ServerSocket(15);
    Socket con=s.accept();
     
    ObjectInputStream in=new ObjectInputStream(con.getInputStream());
    String mat=(String) in.readObject();
    System.out.println(mat);
    String nom=(String) in.readObject();
    System.out.println(nom);
    String prenom=(String) in.readObject();
    System.out.println(prenom);
     
    	}
     
    }
    Merci pour toute intervention.

  2. #2
    Membre expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Deux petites choses :

    Peux-tu préciser à quelle ligne, dans le code que tu as copié dans ton post correspond la ligne 28 de la classe C1 indiquée dans ton message d'erreur (mets la en rouge par exemple) ?

    As-tu essayé d'ajouter un flush() derrière chacun de tes writeObjetct ?

    Quoi qu'il en soit, brut de fonderie, la première ligne de ton message d'erreur indique que C1 à voulu écrire dans un socket qui a été déconnecté par C2.
    Je ne sais pas si ce code est purement didactique, mais pour écrire des valeurs numérique et/ou du texte, il n'y a pas besoin d'exploiter les flux d'objet. En fait, il suffit de bien lire la documentation de l'API Java sur la classe Socket, c'est très complet et clair.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2016
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2016
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    J'ai pu résoudre le problème, effectivement il y avait un problme entre connection et deconnection;
    donc j'ai mal structure write object et read object.

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/04/2014, 22h56
  2. [Jena] Exception InInitializer Error
    Par may.sou dans le forum Frameworks
    Réponses: 2
    Dernier message: 08/06/2012, 00h12
  3. application error "exception edatabaseerror"
    Par ferrero_100 dans le forum Débuter
    Réponses: 9
    Dernier message: 05/04/2011, 17h03
  4. gestion des exceptions via <error-page>
    Par mrjeronimo dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 16/08/2010, 13h26
  5. Réponses: 4
    Dernier message: 15/04/2010, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo