Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2362 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]objectOutputStream

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA]objectOutputStream

n°1996011
kranagard
Posté le 25-05-2010 à 16:44:05  profilanswer
 

Bonjours, j'ai un tout petit serveur (environ 200lignes) qui tourne et qui écoute le réseau sur un port déterminé.
je m'y connecte via un client, et tout a l'air de fonctionner sauf que...
 
une fois connecté au serveur j'ai une fenêtre pour login/pass:
-si je rempli les champs et valide tout se passe bien (jButtonOkActionPerformed)
-si j'annule pour fermer le programme il y a une erreur (jButtonCancelActionPerformed) lors de l'envoie de la valeur de déconnexion au serveur
 

Code :
  1. private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {                                             
  2.     try
  3.     {
  4.         ostream.writeInt(6);
  5.         System.exit(0);
  6.     }
  7.     catch(Exception ex)
  8.     {
  9.         System.out.println("Un probleme est survenu:" );
  10.         System.out.println(ex);
  11.         System.exit(-1);
  12.     }
  13.     }                                           
  14.     private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {                                         
  15.     try
  16.     {
  17.        
  18.         ostream.writeInt(1);
  19.         ostream.writeObject(jTextFieldLogin.getText());
  20.         ostream.writeObject(jTextFieldPass.getText());
  21.         Boolean connected = istream.readBoolean();
  22.         if(connected)
  23.         {
  24.             System.out.println("Connection ok" );
  25.             this.setVisible(false);
  26.            
  27.         }
  28.         else
  29.             jTextFieldPass.setText("" );
  30.     }
  31.     catch(Exception ex)
  32.     {
  33.         System.out.println("Un probleme est survenu:" );
  34.         System.out.println(ex);
  35.         System.exit(-1);
  36.     }
  37.     }


 
j'ai donc, dans un cas un flux qui roule, et dans l'autre un flux qui ne me retourne pas d'erreur mais qui, cotés serveur n'est pas détecté...
 
déclaration:

Code :
  1. server = new Socket(monIP,monPort);
  2. ostream = new ObjectOutputStream(server.getOutputStream());
  3. istream = new ObjectInputStream(server.getInputStream());


 
 
serveur:

Code :
  1. public void run()
  2.     {
  3.        
  4.         try
  5.         {
  6.             ObjectOutputStream ostream = new ObjectOutputStream(client.getOutputStream());
  7.             ObjectInputStream istream = new ObjectInputStream(client.getInputStream());
  8.            
  9.             //ostream.writeObject(obj);
  10.             connected = true;
  11.             while(connected)
  12.             {
  13.                 //reception d'une requete
  14.                 System.out.print("Reception d'une requete: " );
  15.                 int request = istream.readInt();
  16.                 System.out.println(request);
  17.                 switch(request)


 
j'obtiens donc soit:

Code :
  1. Reception d'une requete: 1
  2. -->kranagard->Ok


soit

Code :
  1. Reception d'une requete:
  2. Deconnection (erreur: java.io.EOFException)


 
selon si je fais l'une ou l'autre fonction sur le client...
 
et pour la suite j'ai le même problème qui se pose, quelque soit la write utilisé cotés client, le serveur ne réagit pas. lorsque je ferme le client le serveur le détecte bien pourtant et sans le relancer je peux m'y reconnecter et faire le même teste.
 
donc si quelqu'un a une idée... moi je vois vraiment pas :(

mood
Publicité
Posté le 25-05-2010 à 16:44:05  profilanswer
 

n°1996772
kranagard
Posté le 28-05-2010 à 14:21:35  profilanswer
 

ajout d'un flush() et ça tourne...
 
mais un autre problème se pose un peu plus loin:
 
cotés serveur j'envoie:
 

Code :
  1. ostream.writeObject(courant);


 
et cotés client je récupère:
 

Code :
  1. Properties temp = (Properties) istream.readObject();


 
 
(courant étant évidemment un Properties, et donc Serializable)
 
j'ai bien les valeurs mise a jour dans courant au moment de l'envoie mais cotés client je récupère les anciennes valeurs :/
je comprends pas pourquoi donc si quelqu'un à une idée...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA]objectOutputStream

 

Sujets relatifs
Débutant en Java j'y arrive même pas à ça :( :( :([JAVA][Resolu] Compression multi-volumes
[JAVA]Sauveragrde donnees[JAVA / WebService] Invocation d'un WebService en JAVA
Pourquoi écrire une application web en java ?[Java] Problème de dessin dans jPanel
Etudier les mécanismes de sécurité de JavaAPI Java - package gnu.io
Erreur Java/lang sur Java4NDS 
Plus de sujets relatifs à : [JAVA]objectOutputStream


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR