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]