Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java]Envoi données socket

Sujet résolu
    30 octobre 2007 à 0:14:50

    EDIT: Solution trouvée apres des heures de persévérance(c'était vraiment le petit probleme tout con, le genre de truc qui devrait nous sauter aux yeux), désolé d'avoir posté pour rien :o

    Hello!
    Voila je rencontre un petit souci en utilisant mes socket:
    Le problème est le suivant:
    j'ai un serveur et un client qui s'y connecte.
    Des que le serveur a accepté le client, il lui envoi une chaine de caractere.
    Or celle-ci arrive uniquement au client si le script d'envoi de ma chaine se trouve dans une boucle infinie.

    J'ai comme l'impression que mon serveur envoie l'info trop rapidement avant que mon client se soit mis en écoute du coup mon client écoute dans le vide(Il me semblerait même que readline ne soit pas blocante car si je met la portion de code d'écoute du client dans une boucle infinie, il m'affiche que mon string vaut null sans cesse)...

    Mon code:

    Client:
    1. import java.net.*;
    2. import java.io.*;
    3. public class Client {
    4.         public static void main(String[] args) {
    5.                 BufferedReader ain;                            
    6.                 Socket monSocket;
    7.                 try{
    8.                         monSocket = new Socket("localhost", 10000);    
    9.                         ain = new BufferedReader( new InputStreamReader(monSocket.getInputStream()));
    10.                         String a = null;
    11.                         while(a == null){
    12.                                 a = ain.readLine();
    13.                                 System.out.println(a);
    14.                         }
    15.                 }catch(IOException e){
    16.                         System.out.println("Impossible de se co à l'hote");
    17.                         System.exit(1);
    18.                 }      
    19.                 System.out.println("FIN");
    20.         }
    21. }

    De cette maniere il m'affiche null infiniement,et si j'enleve le while(a==null) j'obtient:

    1. adrien@adrien-laptop:~/Documents/java/Test/bin$ java Serveur &
    2. adrien@adrien-laptop:~/Documents/java/Test/bin$ java Client
    3. null
    4. FIN


    Serveur:
    1. import java.net.*;
    2. import java.io.*;
    3. public class Serveur {
    4.         public static void main(String[] args) {
    5.                 ServerSocket serveur;
    6.                 Socket socketClient;            
    7.                 PrintWriter aout;      
    8.                 try{
    9.                         serveur = new ServerSocket(10000);
    10.                         socketClient = serveur.accept();
    11.                         aout = new PrintWriter( new OutputStreamWriter(socketClient.getOutputStream()));
    12.                         aout.println("hello");
    13.                         aout.close();
    14.                 }catch(IOException e){
    15.                         System.out.println("erreur");
    16.                 }
    17.         }
    18.  }

    Si je met mon envoi dans une boucle, alors la le client finit par capter le message :)

    Si quelqu'un pouvait m'aider la je coincé :)
    merci
    • Partager sur Facebook
    • Partager sur Twitter

    [Java]Envoi données socket

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown