[JAVA]objectOutputStream

objectOutputStream [JAVA] - Java - Programmation

Marsh Posté le 25-05-2010 à 16:44:05    

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 :(

Reply

Marsh Posté le 25-05-2010 à 16:44:05   

Reply

Marsh Posté le 28-05-2010 à 14:21:35    

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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed