Gniazda datagramowe

W przypadku protokołu UDP nie ma zestawianego połączenia, więc nie ma wyróżnianej strony aktywnej i pasywnej. Nie ma więc rozróżnienia między gniazdkami stosowanymi w klientach i serwerach. Podział na stronę serwera i klienta wynika w tym przypadku z funkcji programu, nie zaś ze sposobu korzystania z gniazdek. Po utworzeniu gniazdka datagramowego jest ono gotowe do przeprowadzania komunikacji. Po stronie serwera należy jeszcze przypisać gniazdku numer portu

bind

aby klient mógł je jednoznacznie określić w hoście odległym. Do wysyłania i odbierania datagramów służą funkcje - odpowiednio -

sendto

i

recvfrom

choć można również używać funkcji:

send
recv
write
read

Ponieważ protokół datagramowy nie jest protokołem połączeniowym, dlatego przy każdym wysyłanym datagramie należy podać jego adresata (funkcja sendto posiada taką możliwość). Podobnie przy odbieraniu datagramów, zwłaszcza serwer powinien znać adres nadawcy datagramu (co daje taką możliwość funkcja):

recvfrom

W przypadku gniazdek datagramowych jest możliwość skorzystania z trybu połączeniowego. W rzeczywistości nie jest to prawdziwy tryb połączeniowy - między gniazdkami nie jest zestawiane żadne wirtualne połączenie. Jedynie lokalnie do gniazdka przy pomocy funkcji

connect

przypisać można adres odległego gniazdka. Od tej pory wszystkie datagramy będą wysyłane do tego jednego gniazdka - nie trzeba więc podawać adresu przy każdym datagramie. Tryb połączeniowy gniazdek datagramowych ma sens jedynie po stronie klienta. Numer portu identyfikuje jedno gniazdko, a jeden proces może ich otworzyć więcej.

Jeśli nie zaznaczono inaczej, Zawartość tej strony dostępna jest na licencji GNU Free Documentation License.