RPC

Tous d'abord, lancer le serveur rpc_serv dans une fenêtre et laissez-le tourner.

Puis lancer des clients rpc_clie dans d'autre fenêtres (et sur d'autre machines) (essayez de les lancer en même temps.)

Vous allez maintenant créer un nouveau client et améliorer le serveur.

Le nouveau client prendra 2 chaines de caractères, demandera au serveru de la concaténer.

Dans le serveur; ajoutez une fonction qui prend deux chaines de caractères en entrée et qui a comme resultat leur concaténation.

Les deux chaines doivent être concaténées dans une troisième chaine (locale et static). La valeur retourné doit être un pointeur sur le pointeur qui pointe sur un début de la chaîne.

Par exemple pour retourner "coucou" :

static char* resultat = "coucou" ;
return( (char*) &resultat ) ;
Pour transmettre des chaînes de caractères on utilise xdr_wrapstring.

ATTENTION : en C, si vous déclarez char t[10] ; Le pointeur t EST IDENTIQUE au pointeur &t on ne peut donc pas prendre l'adresse de l'adresse d'un tableau. (C'est normale car &&t[0] est interdit)

ATTENTION : le retour de la fonction RPC est alloué par callrpc dans le cas ou la structure contient des pointeurs NULL, si ces pointeurs ne sont pas NULL alors la couche RPC stocke le résultat à l'adresse indiquée. Donc, si vous voulez récupérer une chaine de caractères, vous devez passez l'adresse d'un pointeur contenant NULL.


Last modified: Mon Jan 29 11:49:24 CET 2001