Bonjour,

Je suis débutant en programmation java et j'ai pour projet la réalisation d'un chat en utilisant les RMI.

Le problème qui se pose c'est que n'arrive pas à envoyer le message aux autres clients connectés.

Voici le code source des classes :

Côté 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
import java.rmi.*;
import java.io.*;
 
public class cltEcho {
    public static void main(String arg[]){
        BufferedReader in=null;
        String msg=null;
        String reponse=null;
        interEcho serveur=null;
 
        try{
            // ouverture du flux clavier
            in=new BufferedReader(new InputStreamReader(System.in));
            // localisation du service
            serveur=(interEcho) Naming.lookup("srvEcho");
            // boucle de lecture des msg à envoyer au serveur d'écho
            System.out.print("Message : ");
            msg=in.readLine().toLowerCase().trim();
            while(! msg.equals("/quit")){
                // envoie du msg au serveur et réception de la réponse
                reponse=serveur.echo(msg);
                // suivi
                System.out.println("Réponse serveur : " +reponse);
                // msg suivant
                    System.out.println("Message : ");
                msg=in.readLine().toLowerCase().trim();
            }
            System.exit(0);
        }
        catch (Exception e){
            System.err.println("Erreur : " +e);
            System.exit(2);
        }
    }
}
Implémentation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
import java.rmi.*;
 
// l'interface distante
public interface interEcho extends Remote{
    public String echo(String msg) throws java.rmi.RemoteException;
    public String broadcast(String msg) throws java.rmi.RemoteException;
}
Côté 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
30
31
32
33
34
import java.rmi.*;
import java.rmi.server.*;
import java.net.*;
 
// classe implémentant l'écho distant
public class srvEcho extends UnicastRemoteObject implements interEcho{
    String message=null;
    int version=0;
 
    // constructeur
    public srvEcho() throws RemoteException{
        super();
    }
    //méthode réalisant l'écho
    public String echo(String msg) throws RemoteException{
        version++;
        message=msg;
        return "[" +msg+ "]";
    }
    public String broadcast(String msg) throws RemoteException{
        return message;
    }
    // création du service
    public static void main (String arg[]){
        try{
            java.rmi.registry.LocateRegistry.createRegistry(1099);
            srvEcho serveurEcho=new srvEcho();
            Naming.rebind("srvEcho",serveurEcho);
            System.out.println("Serveur d'écho prêt");
        } catch (Exception e){
            System.err.println("Erreur " + e + " lors du lancement du serveur d'écho");
        }                
    }
}
Je dois avouer que je suis perdu dans ce langage... Si vous pouvez m'éclairer et expliquer simplement j'en serais ravis.

Merci d'avance pour votre aide.