INDIETRO SU AVANTI

Applicativi senza Connessione

Gli applicativi che non intendono usare TCP ma il servizio UDP di Datagrammi Utente, senza connessione, devono entrambi aprire un socket di tipo SOCK_DGRAM.

A questo punto gli applicativi hanno a disposizione un numero di coppie di funzioni di comunicazione, tutte orientate allo smistamento di messaggi 'atomici' ovvero singoli:


rc = sendto ( sd, buffer, lung, flags, to, indirlung );

rc = recvfrom ( sd, buffer, lung , flags , from, indirlung );

Si ha:

Per poter usare queste funzioni entrambi i corrispondenti devono prima aprire un socket con la chiamata socket, poi assegnargli un identificativo con la chiamata bind. Naturalmente ogni corrispondente deve conoscere l'identificativo dell'altro. Questo identificativo puo' essere una semplice stringa per il dominio UNIX, ed e' una struttura complessa per il dominio Internet.


rc = send ( sd, msgbuf, lung, flags );

rc = recv ( sd, msgbuf, lung, flags );

Ove:

E' da notare che queste funzioni non indicano l'indirizzo del mittente o della destinazione. Sono funzioni intese per essere usate dopo una precedente invocazione della funzione connect. Quando questa funzione nel client viene usata su un socket a datagramma, non compie l'apertura di un circuito virtuale ma la registrazione degli indirizzi di partenza e di arrivo per ogni successivo send o recv. Il server non ha di questi problemi: manda e riceve sul socket che ha aperto e su cui ha effettuato una bind.


Le ultime due funzioni, sendmsg e recvmsg sono orientate all'invio e ricezione di un array di datagrammi e vengono usate molto meno.