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

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA][RESEAU]Problèmes sockets TCP/IP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA][RESEAU]Problèmes sockets TCP/IP

n°412466
Mouaiffe
Posté le 02-06-2003 à 09:57:04  profilanswer
 

Salut à tous :)
 
Voilà le programme suivant ne fonctionne pas :

Code :
  1. import java.io.*;
  2. import java.net.*;
  3. class TCPClient
  4. {
  5.     public static void main(String argv[])
  6.     {
  7.      int choix;
  8.      InetAddress adresse;
  9.      Socket clientSocket;
  10.      BufferedReader in = new BufferedReader ( new InputStreamReader (System.in));
  11.      try
  12.      {
  13.       try
  14.       {
  15.        adresse = InetAddress.getByName("192.168.1.99" );
  16.   clientSocket = new Socket(adresse, 10001);
  17.   if (clientSocket.isConnected()){System.out.println("Connection OK" );}
  18.   DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
  19.        System.out.println("Votre choix :" );
  20.        System.out.println("-1- Entrer la trame" );
  21.        System.out.println("-0- Sortir\n" );
  22.        choix=Integer.parseInt(in.readLine());
  23.        while (choix != 0)
  24.        {
  25.    char c=2;
  26.           String t=c+"DIq";
  27.            outToServer.writeBytes(t);
  28.            System.out.println("Votre choix :" );
  29.         System.out.println("-1- Entrer la trame" );
  30.         System.out.println("-0- Sortir\n" );
  31.         choix=Integer.parseInt(in.readLine());
  32.           }
  33.           clientSocket.close();
  34.           outToServer=null;
  35.           clientSocket=null;
  36.           receptionSocket.close();
  37.          }
  38.       catch (UnknownHostException z){System.out.println(z.getMessage());}
  39.      }
  40.      catch (IOException e){System.out.println(e.getMessage());}
  41.     }//fin main
  42. }//fin classe


 
En réalité, les données ne sont pas correctement envoyées à travers le socket...
Si je ferme le socket immédiatement après l'envoi, les données sont correctement envoyées !
 
Des idées ?
 

mood
Publicité
Posté le 02-06-2003 à 09:57:04  profilanswer
 

n°412470
darklord
You're welcome
Posté le 02-06-2003 à 10:04:02  profilanswer
 

il faut fermet ton outToServer avant le socket. Petit rappel, si tu crées des objets en chaine tu dois les détruires en ordre inverse


---------------
Just because you feel good does not make you right
n°412474
Mouaiffe
Posté le 02-06-2003 à 10:07:39  profilanswer
 

Je ne comprend pas...Fermer outToServer ? Fermer un socket je veux bien mais là je vois pas ...

n°412476
nicky78
Posté le 02-06-2003 à 10:08:33  profilanswer
 

J'y connais pas grand chose mais je rajouterais des outToServer.flush() pour forcer l'envoi des données.

n°412477
Mouaiffe
Posté le 02-06-2003 à 10:09:43  profilanswer
 

nicky78 a écrit :

J'y connais pas grand chose mais je rajouterais des outToServer.flush() pour forcer l'envoi des données.


 
J'ai déjà tenté le coup avec le flush(), ça n'a rien donné  ;)

n°412486
darklord
You're welcome
Posté le 02-06-2003 à 10:17:24  profilanswer
 

Mouaiffe a écrit :

Je ne comprend pas...Fermer outToServer ? Fermer un socket je veux bien mais là je vois pas ...


 
bin regarde dans l'api alors. C'est la PREMIERE chose à faire [:ban]
 
http://java.sun.com/j2se/1.4.1/doc [...] tream.html
 
Il y a une méthode close() sur cet objet. Toi tu le laisses ouvert comme ca dans un état incohérent (le mettre à null ne vas pas fermer le flux proprement)
 
-> tu fais un close sur ton outToServer (outToServer.close(); ) et ensuite tu fais close sur ta socket.


---------------
Just because you feel good does not make you right
n°412508
Mouaiffe
Posté le 02-06-2003 à 10:30:12  profilanswer
 

Ok, j'avais pas vu...
 
Je tente le coup...

n°412527
Mouaiffe
Posté le 02-06-2003 à 10:42:07  profilanswer
 

DarkLord a écrit :


 
bin regarde dans l'api alors. C'est la PREMIERE chose à faire [:ban]
 
http://java.sun.com/j2se/1.4.1/doc [...] tream.html
 
Il y a une méthode close() sur cet objet. Toi tu le laisses ouvert comme ca dans un état incohérent (le mettre à null ne vas pas fermer le flux proprement)
 
-> tu fais un close sur ton outToServer (outToServer.close(); ) et ensuite tu fais close sur ta socket.


 
Ca à l'air de fermer la socket également !

n°412528
darklord
You're welcome
Posté le 02-06-2003 à 10:42:44  profilanswer
 

Mouaiffe a écrit :


 
Ca à l'air de fermer la socket également !  


 
comment ca a l'air de ... Tu peux pas t'exprimer clairement stp?


---------------
Just because you feel good does not make you right
n°412548
Mouaiffe
Posté le 02-06-2003 à 10:49:32  profilanswer
 

Pardon...
 
je que je veux dire c'est qu'en fermant mon DataOutputStream je ferme aussi la socket...La syntaxe est correcte pour toi ?
 

Code :
  1. import java.io.*;
  2. import java.net.*;
  3. class TCPClient
  4. {
  5.     public static void main(String argv[])
  6.     {
  7.      int choix;
  8.      InetAddress adresse;
  9.      Socket clientSocket;
  10.      String recu="";
  11.      BufferedReader in = new BufferedReader ( new InputStreamReader (System.in));
  12.      try
  13.      {
  14.       try
  15.       {
  16.        adresse = InetAddress.getByName("192.168.1.99" );
  17.   clientSocket = new Socket(adresse, 10001);
  18.   if (clientSocket.isConnected()){System.out.println("Connection OK" );}
  19.        System.out.println("Votre choix :" );
  20.        System.out.println("-1- Entrer la trame" );
  21.        System.out.println("-0- Sortir\n" );
  22.        choix=Integer.parseInt(in.readLine());
  23.        while (choix != 0)
  24.        {
  25.    char c=2;
  26.           String t=c+"DIq";
  27.           DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
  28.            outToServer.writeBytes(t);
  29.            outToServer.close();
  30.            outToServer=null;
  31.            System.out.println("Votre choix :" );
  32.         System.out.println("-1- Entrer la trame" );
  33.         System.out.println("-0- Sortir\n" );
  34.         choix=Integer.parseInt(in.readLine());
  35.           }
  36.           clientSocket.close();
  37.           clientSocket=null;
  38.          }
  39.       catch (UnknownHostException z){System.out.println("Erreur 1 : "+z.getMessage());}
  40.      }
  41.      catch (IOException e){System.out.println("Erreur 2 : "+e.getMessage());}
  42.     }// fin main
  43. }//fin classe

mood
Publicité
Posté le 02-06-2003 à 10:49:32  profilanswer
 

n°412567
darklord
You're welcome
Posté le 02-06-2003 à 10:59:07  profilanswer
 

bin non :D
 
tu dois fermer ton outToServer qd tu as terminé de bosser avec ta socket hein :)
 
Donc il faut garder le meme dataoutputtream selon moi
 
Et sinon ca ferme la socket puisque tu crées le stream a partir de socket.getOutputstream) -> qd tu close tu close le out de ta socket


---------------
Just because you feel good does not make you right

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

  [JAVA][RESEAU]Problèmes sockets TCP/IP

 

Sujets relatifs
[JAVA] FOP : new Driver() depuis une servlet[Java/Algo] Reconnaitre un disque dans un image
aidez moi SVP je voudrai mettre mon pc et celui de mon fils en RESEAU[JAVA] Implementer une limite de temps sur une appli = trialware
MySQL - accès réseau ?Pause en Java [ Résolu]
[java] ouverture de fichier ... [cai bon][Java]Gestion de sources...
java + swing + graph2D[JAVA]Bouger la souris dans une applet
Plus de sujets relatifs à : [JAVA][RESEAU]Problèmes sockets TCP/IP


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