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 :

Problème methode readline


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 139
    Points : 35
    Points
    35
    Par défaut Problème methode readline
    Bonjour , je suis en train de faire une application client-serveur avec au niveau du serveur qui écoute via la méthode accept() de la classe ServerSocket ainsi qu'une thread par client.Le problème est que readLine n'est pas bloquant et renvoie tout le temps null.Quand j'envoie quelque chose à partir du client , quand je fais un System.out.println de ce qu'il a reçu , il n'affiche rien.

    voici une partie du code :

    côté client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public void envoiMessage(String msg){
            pw.println(msg);
            pw.flush();
        }
    côté serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while(!estPartieFinie){
                try{
                    System.out.println("arrive bien ici");
     
                        read = br.readLine();
     
                        if(read!=null)
                        System.out.println("ICI"+read);
                }
                catch(Exception e){e.printStackTrace();}
                finally{
                }
            }
    Quand j'envoie à partir du client un message comme ci-dessous , le serveur affiche juste "ICI" et c'est tout :
    msg = ""+Protocole.CMD_LOGOUT+nomJ+Protocole.END_OF_LINE;
    //Protocole.END_OF_LINE est un '\n'

  2. #2
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Points : 2 161
    Points
    2 161
    Par défaut
    Citation Envoyé par dark0502 Voir le message
    Le problème est que readLine n'est pas bloquant et renvoie tout le temps null.
    Comme le dit la Javadoc, si readLine renvoie null, c'est que ton 'reader' (ici br) est fermé ... ou n'a jamais réellement été ouvert.

    Il nous faudra plus de code pour le reste si tu continues à ne pas trouver par toi-même.
    Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    Voici mon constructeur de ThreadJoueur du côté serveur.:
    L
    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
     
     public ThreadJoueur(Socket s, int numThread)throws Exception{
            String protocole,nomJ;
            sock = s ;
            this.br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            this.pw = new PrintWriter(sock.getOutputStream()) ; 
            numJoueur = numThread ; 
     
            protocole = br.readLine();
            nomJ = protocole.substring(1,protocole.lastIndexOf(Protocole.FIN_CHAMP));
     
            nomJ1 = nomJ;
     
            traiterLogin(numThread);
        }

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 139
    Points : 35
    Points
    35
    Par défaut
    voici le constructeur de ThreadJoueur du côté serveur :
    Le System.out.println(protocole); fonctionne et affiche le bon message . C'est au niveau de la méthode run que ça foire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public ThreadJoueur(Socket s, int numThread)throws Exception{
            String protocole,nomJ;
            sock = s ;
            this.br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
            this.pw = new PrintWriter(sock.getOutputStream()) ; 
            numJoueur = numThread ; 
     
            protocole = br.readLine();
            nomJ = protocole.substring(1,protocole.lastIndexOf(Protocole.FIN_CHAMP));
            System.out.println(protocole);
            nomJ1 = nomJ;
     
            traiterLogin(numThread);
        }
    Code méthode run :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while(!estPartieFinie){
                try{
                    System.out.println("arrive bien ici");
     
                        read = br.readLine();
     
                        if(read!=null)
                        System.out.println("ICI"+read);
                }
                catch(Exception e){e.printStackTrace();}
                finally{
                }
            }

Discussions similaires

  1. methode READLINE() problème
    Par neeoo11 dans le forum Général Python
    Réponses: 3
    Dernier message: 18/02/2011, 11h12
  2. Probleme avec la methode readLine()!
    Par thenightmare1985 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/10/2006, 20h00
  3. [Servlet] Problème Methode init
    Par drixfkc dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/08/2006, 12h58
  4. Problème Methode POST
    Par nguthans dans le forum Langage
    Réponses: 3
    Dernier message: 13/01/2006, 20h28
  5. Problème methode POST
    Par raptor70 dans le forum Langage
    Réponses: 18
    Dernier message: 24/10/2005, 10h57

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