Aide pour un CHAT RMI en java
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:
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:
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:
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.