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 :

Socket en localhost - readLine ne reçois pas.


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut Socket en localhost - readLine ne reçois pas.
    Bonjour,

    Je suis novice en programmation de socket et pour un besoin au boulot entre un as400 et une appli pc en java je dois dévolopper des sockets.

    Pour le moment j'ai fais un test en local avec java sur win7. J'ai trouvé un tuto simple en deux classe qui communique (qui devrait ) entre elle.

    Le problème sur situe sur la classse cliente qui attend indéfiniment sur un redLine alors que la classe serveur a envoyé plusieurs données.



    voici les deux classes:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    //Classe serveur.
    package SocketSrv2;
    
    import java.net.*;
    import java.io.*;
    
    public class Srv2 {
    
        public static void main(String[] args) {
            int port = 4001;
            ServerSocket socketEcoute;
    
            try {
                socketEcoute = new ServerSocket(port);
                doService(socketEcoute.accept());
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
        }
    
        static void doService(Socket clientSocket) {
            BufferedReader in; PrintWriter out;
    
            try {
                in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                out = new PrintWriter(clientSocket.getOutputStream());
    
                System.out.println("Client connecté...");
    
                System.out.println("SR Ecriture 1 ...");
                out.println("Bonjour...");
    
                System.out.println("SR Ecriture 2 ...");
                out.println("Comment ça va ?");
    
                System.out.println("SR Lecture 1 ...");
                String ligne = in.readLine();
                System.out.println("<" + ligne + ">");
    
                System.out.println("SR Ecriture 3 ...");
                out.println(ligne);
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
        }
    }
    
    //Classe cliente.
    package SocketCli;
    
    import java.net.*;
    import java.io.*;
    
    public class Cli2 {
    
        public static void main(String[] args) {
            String ligne=null;
            int port = 4001;
            BufferedReader in=null;
            PrintWriter out=null;
            Socket maSocket=null;
    
            try {
                maSocket = new Socket("127.0.0.1", port);
    
                in = new BufferedReader( new InputStreamReader(maSocket.getInputStream()) );
                out = new PrintWriter(maSocket.getOutputStream());
    
                System.out.println("Cl Lecture 1...");
                ligne = in.readLine();   //<--- Blocage !!!
                System.out.println(ligne);
    
                System.out.println("CL Lecture 2...");
                ligne = in.readLine();
                System.out.println(ligne);
    
                System.out.println("CL Ecriture 1...");
                out.write("quit\n");
    
                System.out.println("CL Lecture 3...");
                ligne = in.readLine();
                System.out.println(ligne);
            }
            catch(UnknownHostException uhe) {
                uhe.printStackTrace();
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
        }
    }
    Il ne semble pas que le firewall interdise le port 4001.
    Je ne vois pas bien d'où vien le souci.

    Pourriez vous svp jeter un oeil sur le code j'ai peut-être omi quelque chose.
    Par avance merci.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ca m'a l'air correct. Du coté serveur, ca bloque à quel endroit? Pense aussi a mettre des flush() lors des envois, sinon ca peut rester coincé dans le buffer de la socket sans atteindre le réseau.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Bonjour tchize,

    du coté serveur ça bloque au niveau <lecture 1> apres que les deux out.println précédent eurent étés fait.

    C'est assez étonent car j'ai developé ce weeck-end un programme serveur sur as400 et lancé la même classe cliente sur mon pc et les deux applications communiquent à une execption du cote client qui se bloque au niveeau <ecriture 1> à rien comprendre...

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    as-t bien fais tous les flush?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Non je ne les ai pas recore fait mais ce soir maintenant, je te tiens au courrant.., merci.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 33
    Par défaut
    Bon ok tout fonctionne - youpiiii ,

    c'etait bien l'absence de flush() après un groupe de write.

    java <-> java ok
    AS400 <-> java ok

    Merci à toi tchize

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Installation] SVN://localhost qui ne fonctionne pas
    Par jeromechezgdf dans le forum Subversion
    Réponses: 5
    Dernier message: 04/10/2010, 10h31
  2. Réponses: 8
    Dernier message: 22/06/2008, 08h12
  3. [Mail] Je ne reçois pas l'e-mail
    Par snyfir dans le forum Langage
    Réponses: 1
    Dernier message: 25/06/2007, 22h01
  4. [AJAX] @localhost ça marche mais pas @IP
    Par JauB dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/02/2007, 21h32
  5. Socket probleme bloquage readLine()
    Par TronsoT dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/11/2006, 12h59

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