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

Java Discussion :

programme Client/ serveur


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut programme Client/ serveur
    Bonjour tous le monde
    je suis nouveau en JAVA j'ai crée une petite application client/serveur
    qui a pour but de recevoir ce que envoi le client le serveur n'émet rien
    le problème c'est que le serveur reçois un message sur 2 si j'envoie 2 message j'en reçois juste un
    voici le code

    cote client

    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
     
    import java.io.*;
    import java.net.*;
    import java.util.Scanner;
     
     
    public class client {
    static final int port=8081;
     
    public static void main(String []argv)throws Exception{
     
    String str="salut serveur";
    Scanner sc= new Scanner(System.in);
    Socket s1=new Socket("127.0.0.1",port);
     
    PrintWriter out1=new PrintWriter(new BufferedWriter(new OutputStreamWriter(s1.getOutputStream())),true);
     
    while(!str.equals("exit"))
    {
     
    str=sc.nextLine();
    out1.println(str);
    System.out.println("[client]:"+str);
    }
    s1.close();
     
     
    }
    }

    cote Serveur

    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
     
    import java.io.*;
    import java.net.*;
     
    public class mail {
    static final int port=8081;
     
    public static void main(String []argv) throws Exception
    {String rec;
    ServerSocket serv = new ServerSocket(port);
    System.out.println("serveur en attente de connexion sur lengthport:"+port);
    Socket serr=serv.accept();
    System.out.println("connexion acceptée pour le client");
    BufferedReader in2=new BufferedReader(new InputStreamReader(serr.getInputStream()));
    System.out.println("flux ouvert,serveur pret a recevoir");
     
    rec=in2.readLine();
     
    while(!rec.equals(""))
    {
     
    System.out.print(in2.readLine());
    rec=in2.readLine();
    }
     
    serr.close();
    serv.close();
    }
    }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Tu fais un premier readLine avant ta boucle et tu n'en fais rien.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    rec=in2.readLine();
     
    while(!rec.equals(""))
    {
     
    System.out.print(in2.readLine());
    rec=in2.readLine();
    }
    Tu utilises deux fois readLine() à l'intérieur de ta boucle. En fait voici ce que tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tu lis une ligne et tu la mets dans rec.
    TANT QUE rec n''est pas vide
        Tu lis une ligne et tu l''affiches.
        Tu lis une ligne et tu la mets dans rec.
    ET ON RECOMMENCE
    Donc ton serveur reçoit bien toutes les lignes. C'est toi qui n'en affiche qu'une sur deux.

    Et pour ton test de fin de connection tu devrais tester que rec soit différent de null et non pas une chaîne vide (ou alors la connexion sera fermée dès que le serveur recevra une ligne vide, même si il reste des lignes derrière).

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut
    Merci pour vos réponse c'était idiot de ma part de double " rec=in2.readLine();"
    Merci

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

Discussions similaires

  1. Aide sur un programme Client Serveur
    Par clubmed01 dans le forum Linux
    Réponses: 33
    Dernier message: 29/05/2012, 10h22
  2. programme client serveur mode TCP/UDP en java
    Par ouss01 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 03/04/2009, 09h05
  3. Exemples de programmes client/serveur
    Par anakronox dans le forum Réseau
    Réponses: 11
    Dernier message: 02/12/2008, 14h27
  4. build.xml pour un programme client serveur
    Par donyas dans le forum ANT
    Réponses: 5
    Dernier message: 22/12/2006, 23h49
  5. architecture d'un programme client/serveur asynchrone (win)
    Par Heimdall dans le forum Développement
    Réponses: 2
    Dernier message: 05/09/2003, 23h59

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