Page: 4 S.Euschi
msg=in.readLine().toLowerCase().trim();
}// while
// c'est fini
System.exit(0);
// gestion des erreurs
} catch (Exception e){ import java.rmi.*;
import java.io.*;
public class cltEcho {
public static void main(String arg[]){
// syntaxe : cltEcho URLService
// vérification des arguments
if(arg.length!=1){
System.err.println("Syntaxe : pg url_service_rmi");
System.exit(1);
}
// dialogue client-serveur
String urlService=arg[0];
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(urlService);
// boucle de lecture des msg à envoyer au serveur d'écho
System.out.print("Message : ");
msg=in.readLine().toLowerCase().trim();
while(! msg.equals("fin")){
// envoi 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.print("Message : ");
msg=in.readLine().toLowerCase().trim();
}// while
// c'est fini
System.exit(0);
// gestion des erreurs
} catch (Exception e){
System.err.println("Erreur : " + e);
System.exit(2);
}// try
}// main
}// classe
L’instruction qui demande une référence de l’OD sur le serveur :
serveur=(interEcho) Naming.lookup(urlService);
La méthode lookup utilisée admet comme paramètre l’url du service demandé. Celle-ci a la
forme d’une url classique :
rmi://machine:port/nom_service
avec
rmi : facultatif - protocole rmi
machine : nom ou adresse IP de la machine sur laquelle opère le serveur d’écho -
facultatif, par défaut localhost.
Port : port d’écoute du service d’annuaire de cette machine - facultatif, par défaut 1099
nom_service nom sous lequel a été enregistré le service demandé (srvEcho pour notre
exemple)
Le client aura une instance de l’interface distante interEcho. Si on suppose que le client et le
serveur ne sont pas sur la même machine, lorsqu’on compile le client cltEcho.java, on doit
disposer dans le même répertoire, du fichier interEcho.class, résultat de la compilation de
l’interface distante interEcho, sinon on aura une erreur de compilation sur les lignes qui
référencent cette interface.