Exercice client serveur calculatrice
MuhammadF
-
Utilisateur anonyme -
Utilisateur anonyme -
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
Coté serveur
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)); } } }
A voir également:
- Exercice corrigé client/serveur java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Cybera client - Télécharger - Divers Réseau & Wi-Fi
- Changer serveur dns - Guide
- Eclipse java - Télécharger - Langages
2 réponses
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.
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.
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://www.qwant.com/?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.
Si tu as des tutoriels liens captures merci de bien me faire parvenir.