Application de CHAT en Java RMI
Dans ce tutoriel nous allons découvrir comment créer un programme de chat simple en utilisant deux utilisateurs. Un utilisateur discutera du côté serveur, tandis que l’autre utilisateur discutera du côté client de l’application RMI.

Dans ce tutoriel nous allons utiliser un simple éditeur pour écrire le code source et la ligne de commande (CMD) pour compiler et exécuter notre code. La structure des fichiers de notre projet est présentée ci-dessous:
Pour exécuter le programme suivant, vous avez besoin d’un fichier d’autorisation, pour cela créer un fichier nommé (security.policy) et mettez le code suivant:
grant { permission java.security.AllPermission; };
Définir l’interface de l’objet distante
Ici, nous définissons une interface de l’objet distante nommée « ChatInterface » avec les méthodes suivantes.
- getName() : Cette méthode récupère le nom de l’utilisateur connecté.
- send(String msg) : Cette méthode permet d’envoyer un message
- setClient(ChatInterface c): Cette méthode associé un client au serveur
- getClient() : Cette méthode récupère l’objet client.
import java.rmi.*; public interface ChatInterface extends Remote{ public String getName() throws RemoteException; public void send(String msg) throws RemoteException; public void setClient(ChatInterface c) throws RemoteException; public ChatInterface getClient() throws RemoteException; }
Créer la classe implémentant l’interface de l’objet distante
Créez une classe et implémentez l’interface créée ci-dessus. Ici, nous implémentons les méthodes de l’interface créée ci-dessus.
import java.rmi.*; import java.rmi.server.*; public class Chat extends UnicastRemoteObject implements ChatInterface { public String name; public ChatInterface client = null; public Chat(String n) throws RemoteException { this.name = n; } public String getName() throws RemoteException { return this.name; } public void setClient(ChatInterface c){ client = c; } public ChatInterface getClient(){ return client; } public void send(String s) throws RemoteException{ System.out.println(s); } }
Programme Serveur
Le programme serveur doit hériter la classe qui implémente l’interface de l’objet distante. Ici, nous devons créer un objet distant et le lier au registre RMI.
Voici le programme serveur de cette application. Ici, nous allons hériter la classe créée ci-dessus, créer un objet distant et l’enregistrer dans le registre RMI avec le nom associé à cet objet « CHAT ».
import java.rmi.*; import java.rmi.server.*; import java.util.*; public class ChatServer { public static void main (String[] argv) { try { System.setSecurityManager(new RMISecurityManager()); Scanner s = new Scanner(System.in); System.out.println("Entrez votre nom et appuyez sur Entrée:"); String name=s.nextLine().trim(); Chat server = new Chat(name); Naming.rebind("rmi://localhost/CHAT", server); System.out.println("[System] Le CHAT est prêt:"); while(true){ String msg = s.nextLine().trim(); if (server.getClient() != null){ ChatInterface client = server.getClient(); msg = "["+server.getName()+"] "+msg; client.send(msg); } } }catch (Exception e) { e.printStackTrace(); } } }
Programme Client
Voici le programme client de cette application.
import java.rmi.*; import java.rmi.server.*; import java.util.*; public class ChatClient { public static void main (String[] argv) { try { System.setSecurityManager(new RMISecurityManager()); Scanner s = new Scanner(System.in); System.out.println("Entrez votre nom et appuyez sur Entrée:"); String name = s.nextLine().trim(); ChatInterface client = new Chat(name); ChatInterface server = (ChatInterface)Naming.lookup("rmi://localhost/CHAT"); String msg = "["+client.getName()+"] s'est connecté"; server.send(msg); System.out.println("[System] Le CHAT est prêt:"); server.setClient(client); while(true){ msg = s.nextLine().trim(); msg = "["+client.getName()+"] "+msg; server.send(msg); } }catch (Exception e) { e.printStackTrace(); } } }
Compiler et exécutez l’application
Vous pouvez compilez tous les fichiers Java en une seule fois. comme indiqué ci-dessous.
> javac *.java
Démarrez le registre rmi à l’aide de la commande suivante:
> start rmiregistry
Exécutez le serveur comme indiqué ci-dessous.
> java -Djava.security.policy=security.policy ChatServer
Exécutez le client comme indiqué ci-dessous.
> java -Djava.security.policy=security.policy ChatClient
Résultat final:
