Per sviluppare un'applicativo RPC appropriato occorrono due passi:
Il compilatore di protocollo del toolkit RPC si chiama rpcgen ed usa un particolare linguaggio detto RPC Language (RPCL).
Un file di definizione protocollo in RPCL ha estensione .x. Il seguente ne e' un esempio.
File rdb.x
/* direttive del preprocessore */ %#define DATABSE "personnel.dat" /* il '%' lo fa passare al prepr. */ /* definizioni di costanti */ const MAX_STR = 256; /* definizioni di strutture */ struct record { string firstName; string middleInitial ; string lastName ; int phone; string location ; }; /* definizioni di programma e procedure contenute */ program RDBPROG { version RDBVERS { record FIRSTNAME_KEY(string) = 1; record LASTNAME_KEY(string) = 2; record PHONE_KEY(int) = 3; record LOCATION_KEY(string) = 4; int ADD_RECORD(record) = 5; } = 1; /* numero di versione */ } = 0x20000001; /* numero identificativo di programma */
Vengono definite quattro procedure di servizio che compiono ricerche per nome e cognome, numero di telefono e locazione. Viene definita anche una procedura di aggiunta record.
La definizione di protocollo viene compilata con il comando seguente:
rpcgen rdb.x
Il risultato e' la generazione di un numero di files:
Occorre ora generare i programmi lato client e lato server per il nostro applicativo. Siano dati:
cc -c rdb.c
cc -c rdb_clnt.c
cc -c rdb_xdr.c
cc -o rdb rdb.o rdb_clnt.o rdb_xdr.o
cc -c rdb_svc_proc.c
cc -c rdb_csvc.c
cc -o rdb_svc rdb_svc_proc.o rdb_svc.o rdb_xdr.o
Sulla macchina server basta lanciarlo in background:
rdb_svc &
Sulla macchina client occorre lanciare il comando client con opportuni parametri, p.es.:
$ rdb flick 2 ROSSI first middle last phone location MARIO B ROSSI 213 A112
La sintassi paricolare del nostro comando client e:
rdb <server> <numproc> <parametri>
Ove: