TP1 : RPC


Exercice 0


(facultatif)
Reprendre le code vu en TD (incrémentation d'une valeur entiè et division entière). Compilez ce code et testez l'appel de procédure à distance sur une machine.


Exercice 1


On désire implanter un serveur de calcul sur des matrices 2 x 2 à coefficients réels. Les services proposés sont l'incrémentation des éléments de la matrice de 1 (permet de tester le codage/décodage XDR sur un exemple simple), l'addition de deux matrices, la multiplication par un scalaire et la multiplication matricielle.
  1. Mettre en place un tel serveur sur votre machine.
  2. Implanter un client qui appelle un de ces services au choix de l'utilisateur, sur deux matrices exemple.


Exercice 2


Avez-vous remarqué qu'une fois votre programme enregistré lors du lancement de votre serveur, ce programme reste enregistré même si le serveur est stoppé ? Utilisez la commande rpcinfo -p pour afficher la liste des programmes RPC enregistrés sur votre machine. Cette commande, avec d'autres options, permet de vérifier que le serveur derrière un enregistrement est effectivement lancé et prêt à recevoir des appels de procédure. Testez également cette fonctionnalité. Enfin, une autre option de cette commande permet de désenregistrer le programme, mais ceci est réservé au root.
  1. Utilisez la fonction pmap_unset pour désenregistrer proprement le programme de l'exercice 1 lorsque le serveur est arrêté.


Exercice 3


On veut désormais pouvoir gérer des matrices carrées de taille n :
  1. Reprendre les exercices 1 et 2 et les modifier pour utiliser de telles matrices.
  2. Essayez également de mettre 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.


Exercice 4


En vous aidant de certaines structures et fonctions définies dans /usr/include/netdb.h pour obtenir des informations réseau sur la machine hôte, (struct hostent, man gethostbyname), et des fontions pmap_* et structures pmap* (voir man rpc), essayez d'implanter un petit programme permettant d'afficher les informations sur les programmes RPC enregistrées sur une machine.





[Page réalisée à en partie à l'aide d'un document de Guillaume Latu]