Exercice client serveur calculatrice - Java

A voir également:Exercice client serveur calculatriceExercice client/serveur ✓ - Forum - Réseau Architecture client serveur - Articles Processus d'execution client serveur - Forum - Windows 10 Architecture client serveur 3 tiers - Articles Csrss.exe processus d'exécution client-serveur - Conseils pratiques - Processus

Bonjour a tous j'ai créé une calculatrice client serveur avec deux opérandes mais je n'arrive pas à connecter les deux machines.Quand le client envoie une le calcul à faire au serveur il le reçoit mais ne renvoie pas le résultat du calcul. Que dois-je faire pour que le serveur puisse renvoyer le résultat du calcul émis par le serveur? Merci de me faire parvenir toute aide elle sera la bienvenue.
Merci encore une fois

Cote client


  package calcul;   // programme Java pour illustrer la programmation côté client // pour une calculatrice simple utilisant TCP import java.io.DataInputStream;  import java.io.DataOutputStream;  import java.io.IOException;  import java.net.InetAddress;  import java.net.Socket;  import java.net.UnknownHostException;  import java.util.Scanner;     public class calculclient  {      public static void main(String[] args) throws IOException      {          InetAddress ip = InetAddress.getLocalHost();          int port = 4444;          Scanner sc = new Scanner(System.in);             // Étape 1: Ouvrir la connexion de socket.         Socket s = new Socket(ip, port);                      // Étape 2: Communication: obtenir les flux d'entrée et de sortie         DataInputStream dis = new DataInputStream(s.getInputStream());          DataOutputStream dos = new DataOutputStream(s.getOutputStream());             while (true)          {               // Entrez l'équation sous la forme             // "opérande1 opération opérande2"             System.out.print("Entrez l'équation sous la forme: ");              System.out.println("opérande operation opérande''");                 String inp = sc.nextLine();                 if (inp.equals("bye"))                  break;                 // envoyer l'équation à résoudre             dos.writeUTF(inp);                 //  attendre que la demande soit traitée et renvoyée au client             String ans = dis.readUTF();              System.out.println("Answer=" + ans);          }      }  }  




Coté serveur


  package calcul;   //Programme Java pour illustrer la programmation côté serveur // pour une calculatrice simple utilisant TCP  import java.io.DataInputStream;  import java.io.DataOutputStream;  import java.io.IOException;  import java.net.ServerSocket;  import java.net.Socket;  import java.util.StringTokenizer;     public class calculserver  {      public static void main(String args[]) throws IOException      {             // Étape 1: Établissez la connexion de socket.         ServerSocket ss = new ServerSocket(4444);          Socket s = ss.accept();              // Étape 2: Traitement de la demande.         DataInputStream dis = new DataInputStream(s.getInputStream());          DataOutputStream dos = new DataOutputStream(s.getOutputStream());             while (true)          {              // wait for input              String input = dis.readUTF();                 if(input.equals("bye"))                  break;                 System.out.println("Équation reçu:-" + input);              int result;                               // Utiliser StringTokenizer pour diviser l'équation en opérande et             // opération             StringTokenizer st = new StringTokenizer(input);                 int oprnd1 = Integer.parseInt(st.nextToken());              String operation = st.nextToken();              int oprnd2 = Integer.parseInt(st.nextToken());                              // effectuer l'opération requise.             switch (operation) {                 case "+":                     result = oprnd1 + oprnd2;                     break;                 case "-":                     result = oprnd1 - oprnd2;                     break;                 case "*":                     result = oprnd1 * oprnd2;                     break;                 default:                     result = oprnd1 / oprnd2;                     break;             }              System.out.println("Sending the result...");                 // renvoyer le résultat au client.             dos.writeUTF(Integer.toString(result));          }      }  }  

Forum

A voir également:Exercice client serveur calculatriceExercice client/serveur ✓ - Forum - Réseau Architecture client serveur - Articles Processus d'execution client serveur - Forum - Windows 10 Architecture client serveur 3 tiers - Articles Csrss.exe processus d'exécution client-serveur - Conseils pratiques - Processus

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour


Dans ton client, il faut faire une boucle d’écoute, comme dans ton serveur.
Il faudrait peut-être que le serveur réponde sur un autre port.

Reply
réponses:
  • auteur

    C'est à dire que je dois changer le numéro de port ? Pour le client comment dois je créer la boucle d'écoute ?
    Si tu as des tutoriels liens captures merci de bien me faire parvenir.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Pour le client comment dois je créer la boucle d'écoute ?

Exactement comme dans ton serveur.

Si tu as des tutoriels liens captures merci de bien me faire parvenir.

https://lmqt.fyi/?q=tuto+java+client+serveur

C'est à dire que je dois changer le numéro de port ?

Je ne suis pas un expert en Java, mais j'ai un peu d'expérience de client serveur, en local host, en C#.

Si le client parle au serveur en local host sur le port 1234. Le server s'abonne en écoute sur ce port.
Selon comment Java et l'OS gèrent ça, le port peut-être "réservé" au serveur.
Si c'est le cas, quand le serveur répond sur le même port, il n'y a que lui qui reçoit sa réponse, en gros il parle tout seul.

J'ai déjà eu ce problème en C# sur windows, peut-être qu'en Java ou sous Unix ça se passe autrement, j'en sais rien.
Dans le doute, je t'ai dit que peut-être utiliser un autre port pour la réponse du serveur serait une bonne option.

Si tu étais sur 2 machines, la question ne se poserait pas
1.1.1.1 parle à 1.1.1.2 sur le port 1234.
1.1.1.2 répond à 1.1.1.1 sur le port 1234.
C'est le même port mais sur 2 IP différentes, pas de risque de conflit.

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed