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 :

        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);

        svc_run()

        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]