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 (client serveur)


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut Socket (client serveur)
    Bonjour;
    je suis débutant pour les programmes socket, et j'ai réalisé deux programmes client.java et serveur.java

    et je veux que ces programmes fait des calcul simple (multiplication, addition ..)
    le probleme c'est que le serveur prend en compte que la premiere operation .

    Quelqu'un peut trouver la solution pour que pon programme fasse les quatre operation indiqué dans la classe 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
    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
    ******************************** client.java******************************
     
    import java.io.*;
    import java.net.*;
     
     
    public class Client {
    static final int port = 8080;
     
     
    public static void main(String[] args) throws Exception {
     
     
    Socket socket2 = new Socket("localhost", 8080);
    System.out.println("SOCKET = " + socket2);
     
    BufferedReader plec2 = new BufferedReader(
    new InputStreamReader(socket2.getInputStream())
    );
     
    PrintWriter pred2 = new PrintWriter(
    new BufferedWriter(
    new OutputStreamWriter(socket2.getOutputStream())),
    true);
     
     
     
    String str = "";
     
    for (int i = 0; i < 10; i++) {
     
    //Addition
     
    pred2.println("add");
    pred2.println("16");
    pred2.println("12");
     
    str = plec2.readLine(); // lecture de l'écho
    System.out.println("L'addition des deux valeur est : " + str);
     
     
    //Multiplication
     
    pred2.println("mul");
    pred2.println("5");
    pred2.println("9"); // envoi d'un message
     
    str = plec2.readLine(); // lecture de l'écho
    System.out.println("La multiplication des deux valeur est : " + str);
     
     
    // Soustraction
     
    pred2.println("sou");
    pred2.println("30");
    pred2.println("19"); // envoi d'un message
     
    str = plec2.readLine(); // lecture de l'écho
    System.out.println("La soustraction des deux valeur est : " + str);
     
     
    //Devision
     
    pred2.println("dev");
    pred2.println("90");
    pred2.println("10"); // envoi d'un message
     
    str = plec2.readLine(); // lecture de l'écho
    System.out.println("La Devision des deux valeur est : " + str);
    }
    }
    }

    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    ******************************** serveur.java******************************
     
    import java.io.*;
    import java.net.*;
     
    public class Serveur {
    static final int port = 8080;
     
    public static void main(String[] args) throws Exception {
     
    ServerSocket s = new ServerSocket(port);
     
    Socket soc ;
    BufferedReader plec;
    PrintWriter pred;
     
     
     
    //Socket soc1 ;
    //BufferedReader plec1;
    //PrintWriter pred1;
     
     
    while (true) {
     
    System.out.println("Attente d'appel ... ");
     
    soc = s.accept();
    plec = new BufferedReader(
    new InputStreamReader(soc.getInputStream())
    );
     
     
    pred = new PrintWriter(
    new BufferedWriter(
    new OutputStreamWriter(soc.getOutputStream())),
    true);
     
     
     
    System.out.println("le serveur est en attends de message de client ......... ");
     
    String str = plec.readLine(); // lecture du message
     
    if (str.equals("END")) break;
    System.out.println("ECHO = " + str);
     
     
    if (str.equals("add") )
    {
    String a1 = plec.readLine();
    String a2 = plec.readLine();
    System.out.println("L'opération envoyé par le client est :: la somme ");
    Integer a11 = (new Integer(a1));
    Integer a21 = (new Integer(a2));
    int r=a11.intValue() + a21.intValue();
    Integer R = new Integer(r);
    pred.println(R.toString());
    }
     
     
     
    if (str.equals("sou") )
    {
     
    String a1 = plec.readLine();
    String a2 = plec.readLine();
    System.out.println("L'opération envoyé par le client est :: la soustraction");
    Integer a11 = (new Integer(a1));
    Integer a21 = (new Integer(a2));
    int r=a11.intValue() - a21.intValue();
    Integer R = new Integer(r);
    pred.println(R.toString());
    }
     
     
    if (str.equals("mul") )
    {
    String a1 = plec.readLine();
    String a2 = plec.readLine();
    System.out.println("L'opération envoyé par le client est :: le produit ");
    Integer a11 = (new Integer(a1));
    Integer a21 = (new Integer(a2));
    int r=a11.intValue() * a21.intValue();
    Integer R = new Integer(r);
    pred.println(R.toString());
    }
     
     
    if (str.equals("dev") )
    {
    String a1 = plec.readLine();
    String a2 = plec.readLine();
    System.out.println("L'opération envoyé par le client est :: la Devision ");
    Integer a11 = (new Integer(a1));
    Integer a21 = (new Integer(a2));
    int r=a11.intValue()/ a21.intValue();
    Integer R = new Integer(r);
    pred.println(R.toString());
    }
     
    }
    plec.close();
    pred.close();
    soc.close();
    }
    }


  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 : 45
    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
    ton serveur demande une nouvelle connexion pour chaque opération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (true) {
     
    System.out.println("Attente d'appel ... ");
     
    soc = s.accept();
    Alors que ton client effectue toutes ses opération sur la même socket. Résultat, les demandes du client au delà de la première sont ignorées.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 10
    Par défaut
    oui je sais que mon serveur demande une nouvelle connexion pour chaque opération:


    mais la question qui se pose :comment doit-il fonctionne mon programme afin d'effectuer tous les operation

  4. #4
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Tu peu par exemple utiliser un objet qui va lancer en boucle le traitement a chaque connection de client.
    Ainsi ton client pourra traiter tout les info qu il veut et qd il se deconnecte, tu ferme le socket client qui lui est dedié.
    Ton problème c'est surtout que tu t es lancé dans le code sans vraiment avoir pensé ton appli (je sais ce que sais, on l a tous fais )

  5. #5
    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 : 45
    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
    Citation Envoyé par elyse86 Voir le message
    mais la question qui se pose :comment doit-il fonctionne mon programme afin d'effectuer tous les operation
    Comme tu veux qu'il fonctionne. T'as deux possibilité. Soit tu change ton client pour qu'il corresponde à ce qu'attends ton serveur (une connection par opération), soit tu change ton serveur pour qu'il corresponde à ce que veux faire ton client (plusieurs opérations par connection).

Discussions similaires

  1. Socket client serveur
    Par ppphil dans le forum C#
    Réponses: 1
    Dernier message: 08/09/2007, 10h57
  2. [C] Probleme avec socket client-serveur TCP
    Par LinuxUser dans le forum Réseau
    Réponses: 33
    Dernier message: 15/05/2007, 22h26
  3. [socket] client/serveur multi-thred
    Par iag_1980 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 03/03/2007, 15h38
  4. socket client serveur
    Par idino dans le forum Réseau
    Réponses: 3
    Dernier message: 29/01/2007, 14h45
  5. Socket client serveur
    Par rhdjml dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 12h09

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