
   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.