Ciao a tutti,
sto facendo il primo tutorial di un corso di sistemi distribuiti, incentrato sulle RPC.

Si tratta di un semplice programmino che fornisce tre funzioni da richiedere all'host remoto, posto il codice del server:
codice:
#define PROG (unsigned long) 0x200000117
#define VERS (unsigned long) 1
#define F1 (unsigned long) 1
#define F2 (unsigned long) 2

#include <stdio.h>
#include <rpc/rpc.h>
#include <netdb.h>
#include <time.h>

char **greet() {
	/* variabile statica per il ritorno */
	static char* saluto = "Ciao";
	printf("Ricevuta richiesta per il greet\n");
	return ((caddr_t*) &saluto);
}

unsigned int *hour() {
	struct tm*ts;
	static unsigned int r;
	printf("Ricevuta richiesta per hour\n");
	time_t t;
	time(&t);
	ts = localtime(&t);
	r = ts->tm_hour;
	return ((unsigned int*) &r);
}

int main(int argc, char**argv) {
	registerrpc(PROG, VERS, F1, greet, xdr_void, xdr_wrapstring);
	registerrpc(PROG, VERS, F2, hour, xdr_void, xdr_u_int);
	printf("Server RPC avviato...\n");
	svc_run();
	fprintf(stderr, "Errore: svc_run() ritornata\n");
	exit(1);
}
Il sistema è Ubuntu 11.10, l'IDE Eclipse Indigo. Il compilatore dice che registerrpc è stata implicitamente dichiarata, ma non riesco a trovare su internet qual'è l'header che la contiene (che penso dovrebbe essere rpc.h...). Inoltre se compilo ed eseguo mi viene restituita connessione rifiutata (Cannot register service: RPC: Unable to receive; errno = Connection refused
couldn't register prog 279 vers 1), cosa devo fare per abilitarla?