Bonjour,
Pouvez-vous me dire s'il vous plaît comment je permets à un serveur d'écouter sur deux ports ainsi de communiquer entre deux machines distantes. Je travaille sur les systèmes distribués et mon but est de communiquer entre deux machines distantes en utilisant le modèle client-serveur tel que


si par exemple :

serveur : " bonjour "
client : if msgServeur = bonjour
then

repondre : cv

else

client : bonjour

voici le code source et j'ai developpé mais j'arrive pas à communiquer les deux machines :

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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
 
 
public class serveurrrr {
 
 
	public static void main(String[] test) {
 
	     final ServerSocket serveurSocket  ;//accepte les connexion venues des clients 
	     final Socket clientSocket ; //permet de se connecter à la machine distante 
	     final BufferedReader in; // lire le texte reçu à partir de l'emetteur 
	     final PrintWriter out; // envoyer le texte saisi 
	     final Scanner sc =new Scanner(System.in); // lire les entrées clavier 
 
	     try {
	       serveurSocket = new ServerSocket(180);
	       clientSocket = serveurSocket.accept();
	       out = new PrintWriter(clientSocket.getOutputStream());
	       in = new BufferedReader (new InputStreamReader (clientSocket.getInputStream()));
	       Thread envoi= new Thread(new Runnable() {
	          String msg;
	          @Override
	          public void run() {
	             while(true){
	                msg = sc.nextLine();
	                out.println(msg);
	                out.flush();
	             }
	          }
	       });
	       envoi.start();
 
	       Thread recevoir= new Thread(new Runnable() {
	          String msg ;
	          @Override
	          public void run() {
	             try {
	                msg = in.readLine();
	                //tant que le client est connecté
	                while(msg!=null){
	                   System.out.println("Client : "+msg);
	                   msg = in.readLine();
	                }
	                //sortir de la boucle si le client a déconecté
	                System.out.println("Client déconecté");
	                //fermer le flux et la session socket
	                out.close();
	                clientSocket.close();
	                serveurSocket.close();
	             } catch (IOException e) {
	                  e.printStackTrace();
	             }
	         }
	      });
	      recevoir.start();
	      }catch (IOException e) {
	         e.printStackTrace();
	      }
	   }
	}
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
 
	import java.io.BufferedReader;
	import java.io.IOException;
	import java.io.InputStreamReader;
	import java.io.PrintWriter;
	import java.net.Socket;
	import java.util.Scanner;
    import java.util.*;
 
	public class client2 {
 
		public static void main(String[] args) {
 
		      final Socket clientSocket;
		      final BufferedReader in;
		      final PrintWriter out;
		      final Scanner sc = new Scanner(System.in);//pour lire à partir du clavier
 
		      try {
		         /*
		         * les informations du serveur ( port et adresse IP ou nom d'hote
		         * 169.254.2.144 est l'adresse local de la machine
		         */
		         clientSocket = new Socket("169.254.2.44",180);
		         //flux pour envoyer
		         out = new PrintWriter(clientSocket.getOutputStream());
		         //flux pour recevoir
		         in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
 
		         Thread envoyer = new Thread(new Runnable() {
		             String msg ;
		            // String msggg ; 
 
 
	             String   msg1 = in.readLine();
 
		              @Override
		              public void run() {
		                while(true){
		                	if ( msg1.equals("bonjour"))
		                	{
		                		msg.equals( " cv bien et toi") ; 
				                //  out.println("client : cv bien et toi ! "); 
 
		                	 }
		                	else 
		                	{ msg.equals( "merci") ;  }                 
		                	//out.println("client : bonjour serveur ") ; 
		                 msg = sc.nextLine();
		                  out.println(msg);
		                  out.flush();
		                }
		             }
		         });
		         envoyer.start();
 
		        Thread recevoir = new Thread(new Runnable() {
		            String msg;
		            @Override
		            public void run() {
		               try {
		                 msg = in.readLine();
		                 while(msg!=null){
		                    System.out.println("Serveur : "+msg);
		                    msg = in.readLine();
		                 }
		                 System.out.println("Serveur déconecté");
		                 out.close();
		                 clientSocket.close();
		               } catch (IOException e) {
		                   e.printStackTrace();
		               }
		            }
		        });
		        recevoir.start();
 
		      } catch (IOException e) {
		           e.printStackTrace();
		      }
		  }
		}
merci infiniment d'avance ))