Université Louis Pasteur
LICENCE 3ème année
Travaux
Pratiques
de
Programmation Distribuée
(sujet
n°1)
Appel
de procédure à distance (RPC)
Télécharger ces
exemples.
Exercice 1
Compiler puis tester l'exemple se
trouvant dans le répertoire 'PremierExemple/'.
Constater que votre serveur est enregistré au niveau du serveur
de liaison avec la commande : "/usr/sbin/rpcinfo -p
". Le
numéro de programme en décimal de votre service est
536871168.
Exercice 2
Definir un appel RPC qui permette de
calculer, de facon distante, la division entière d'un nombre par
un autre. Le serveur de calcul (qui est responsable de la division) se
trouvera sur votre machine (par exemple Codd). Vous exécuterez
le client sur une autre machine (par exemple Turing). Pour cela, il est
possible de garder en permanence une
fenêtre sur cette autre machine avec la commande "ssh
-X votre_login@autre_machine
". Vous éditerez
les fichiers sources sur votre machine. Les sources pour débuter
cet exercice se trouve dans le répertoire 'DiviseExercice/'.
Exercice 3
On désire implanter un serveur
de calcul sur des matrices 2 x 2 à coefficients
réels qui offre comme service : - la multiplication de deux
matrices. Mettre en place un tel serveur sur votre machine.
Exercice 4
Ajouter le service : - addition de
deux matrices. Le client offrira la possibilité d'appeler le
service de multiplication ou d'addition, au choix.
Exercice 5
Reprenez les exercices 3 et 4 en considérant que les
matrices à multiplier peuvent être n x n. Mettez en
évidence qu'il existe un time-out (au niveau du client) et une
retransmission lorsque l'appel de fonction distant prend un peu de
temps.
Rappels :
- Enregistrement d'un service :
int registerrpc(u_long
prognum, u_long versnum, u_long procnum, char *(*procname)(), xdrproc_t
inproc, xdrproc_t outproc);
int callrpc(char *host,
u_long prognum, u_long versnum, u_long procnum, xdrproc_t inproc, char
*in, xdrproc_t outproc, char *out);
- Mise en attente d'un serveur :
svc_run()
- Utiliser les pages de manuel : "
man registerrpc
" "man
xdr_string
"
Regarder les fichiers rpc.h
et xdr.h
du répertoire /usr/include/rpc
[Page réalisée à partir d'un document de Guillaume
Latu]