15) Cos’è un gestore di trasporto?

È una struttura astratta che:

SERVER:

le chiamate per la creazione del gestore di trasporto sono:

SVCXPRT * svcudp_create(int sock)

SVCXPRT * svctcp_create(int sock, u_int send_buf_size, u_int ecv_buf_size)

Il gestore di trasporto è associato alla socket sock, la quale può assumere il valore RPC_ANYSOCK, nel qual caso è creata una nuova socket per i risultati. Se la socket associata al gestore non ha un numero di porta, si genera un numero di porta in modo automatico.

in caso di insuccesso, le primitive ritornano NULL ed il gestore non viene creato.

CLIENT:

le chiamate per la creazione del gestore di trasporto sono:

CLIENT * clntudp_create(addr, prognum, versnum, wait, sockp)

CLIENT * clnttcp_create(addr, prognum, versnum, sockp, sendsz, recvsz)

struct sockaddr_in *addr;

u_long prognum,versnum;

struct timeval wait; /*durata intervallo di timeout*/

int *sockp;

u_int sendsz,recvsz; /*dimensione dei buffer*/

se il numero di porta all'interno del socket address remoto vale 0, si lancia un'interrogazione al port mapper per ottenerlo

l'interrogazione iniziale causa una connessione, l'accettazione della connessione, consente la RPC

 


Back
Index
Back