Application de CHAT en Java RMI

image_pdfimage_print

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.
 


 
 

Télécharger le code source en cliquant ici.

 
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();
	    	}
		}
}
Télécharger le code source en cliquant ici.

 

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:


 
Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *