Provided by: manpages-pl_20060617-4_all bug

NAZWA

       udp - protokol datagramow uytkownika dla IPv4

SK/LADNIA

       #include <sys/socket.h>
       #include <netinet/in.h>
       udp_socket = socket(PF_INET, SOCK_DGRAM, 0);

OPIS

       Jest   to   implementacja  opisanego  w  RFC 768  protokolu  datagramow
       uytkownika.  Implementuje  ona   uslug   bezpolczeniowych,   niepewnych
       pakietow  datagramowych.   Kolejno  pakietow moe ulec zmianie przed ich
       dotarciem do celu, mog one te zosta powielone. UDP generuje i  sprawdza
       sumy kontrolne, aby wykry bldy transmisji.

       Podczas  tworzenia  gniazda  UDP,  jego  adresy:  lokalny  i  zdalny  s
       nieokrelone.  Datagramy mona wysyla natychmiast za pomoc sendto(2)  lub
       sendmsg(2)   podajc  jako  argument  prawidlowy adres docelowy. Gdy dla
       gniazda jest wywolane connect(2), ustawiany jest domylny adres docelowy
       i  od tego momentu mona wysyla datagramy za pomoc send(2)  lub write(2)
       nie podajc adresu docelowego.  Nadal moliwe jest  wysylanie  do  innych
       adresow docelowych podajc adres funkcji sendto(2)  lub sendmsg(2).  Aby
       odbiera pakiety,  gniazdo  moe  zosta  najpierw  przypisane  do  adresu
       lokalnego  za  pomoc  bind(2).   W przeciwnym przypadku, warstwa gniazd
       automatycznie przypisze wolny port lokalny spoza zakresu zdefiniowanego
       przez net.ipv4.ip_local_port_range i przypisze gniazdo do INADDR_ANY.

       Wszystkie  operacje odbioru zwracaj tylko jeden pakiet. Gdy pakiet jest
       mniejszy ni  przekazany  bufor,  zwracane  s  tylko  dane  o  rozmiarze
       pakietu,  gdy  pakiet  jest  wikszy  ni  bufor,  pakiet jest obcinany i
       ustawiany jest znacznik MSG_TRUNC.  MSG_WAITALL nie jest wspierane.

       Opcje IP mog by wysylane lub odbierane za pomoc opcji gniazda opisanych
       w  ip(7).   S one przetwarzane przez jdro tylko wtedy, gdy wlczona jest
       odpowiednia kontrolka systemowa (ale nadal s przekazywane  do  programu
       uytkownika, nawet gdy kontrolka jest wylczona). Zobacz ip(7).

       Gdy   przy  wysylaniu  ustawiony  jest  znacznik  MSG_DONTROUTE,  adres
       docelowy musi odnosi si do lokalnego adresu interfejsu  i  pakiet  jest
       wysylany jedynie do tego interfejsu.

       UDP  dzieli  pakiet na fragmenty, gdy jego calkowity rozmiar przekracza
       warto  MTU  (Maximum  Transmission  Unit)  dla  interfejsu.    Bardziej
       przyjazn dla sieci alternatyw jest korzystanie z badania MTU cieki, jak
       opisano w rozdziale IP_PMTU_DISCOVER podrcznika ip(7).

FORMAT ADRESU

       UDP stosuje format adresu IPv4 sockaddr_in opisany w ip(7).

OBS/LUGA B/LD'OW

       Wszystkie bldy krytyczne s przekazywane  do  programu  uytkownika  jako
       warto  zwracana,  nawet  gdy gniazdo nie jest polczone. Dotyczy to take
       bldow asynchronicznych otrzymywanych  z  sieci.  Mona  te  otrzyma  bld
       dotyczcy  pakietu  wczeniej  wyslanego  z danego gniazda. To zachowanie
       roni si od wielu innych implementacji gniazd BSD, ktore  nie  przekazuj
       adnych  bldow,  gdy  gniazdo  nie  jest polczone. Zachowanie Linuksa ma
       oparcie w RFC 1122.

       Dla zgodnoci z kodem odziedziczonym w wersjach 2.0 i 2.2  jdra  Linuksa
       bylo  moliwe  ustawienie  opcji  SOL_SOCKET SO_BSDCOMPAT, aby otrzymywa
       bldy zdalne tylko wtedy, gdy gniazdo jest polczone (z wyjtkiem EPROTO i
       EMSGSIZE).   Bldy  wygenerowane lokalnie s zawsze przekazywane. Obsluga
       tej opcji zostala usunita w kolejnych  wersjach  jdra;  szczegoly  mona
       znale w socket(7).

       Gdy  wlczona  jest  opcja  IP_RECVERR, wszystkie bldy s przechowywane w
       kolejce bldow gniazda i mog  by  odczytywane  za  pomoc  recvmsg(2)   z
       ustawionym znacznikiem MSG_ERRQUEUE.

OPCJE GNIAZD

       Aby  ustawi  lub  pobra  opcj gniazda UDP, naley wywola getsockopt(2) w
       celu odczytania lub setsockopt(2) w  celu  zapisania  opcji,  ustawiajc
       argument poziomu opcji na IPPROTO_UDP.

       UDP_CORK (od Linuksa 2.5.44)
              Jeli ta opcja zostanie wlczona, to wszystkie dane na wyjciu tego
              gniazda s  lczone  do  pojedynczego  datagramu,  ktory  zostanie
              wyslany,  kiedy ta opcja zostanie wylczona. Opcja ta nie powinna
              by uywana w kodzie, ktory w zamierzeniu ma by przenony.

IOCTL

       Do poniszych kontrolek wejcia/wyjcia mona uzyska dostp za pomoc funkcji
       ioctl(2).  Prawidlowa skladnia to:

              int value;
              error = ioctl(udp_socket, ioctl_type, &value);

       FIONREAD (SIOCINQ)
              Pobiera   wskanik   do  argumentu  calkowitego.  Zwraca  rozmiar
              nastpnego oczekujcego datagramu w podanej liczbie bajtow lub  0,
              gdy nie czeka aden pakiet.

       TIOCOUTQ (SIOCOUTQ)
              Zwraca   liczb   bajtow   danych  w  lokalnej  kolejce  pakietow
              wychodzcych.  Wspierane przez Linuksa 2.4 i poniejsze wersje.

       Ponadto wspierane s wszystkie kontrolki wejcia/wyjcia opisane w ip(7) i
       socket(7).

B/LDY

       Przy  wysylaniu  lub  odbieraniu  za porednictwem gniazd UDP mog wystpi
       wszystkie bldy zdefiniowane dla socket(7)  lub ip(7).

       ECONNREFUSED Z adresem docelowym nie byl skojarzony aden odbiorca.  Moe
       to  by  spowodowane  przez  uprzednie  wyslanie pakietu za porednictwem
       danego gniazda.

WERSJE

       IP_RECVERR pojawilo si w Linuksie 2.2.

PODZIKOWANIA

       T strone podrcznika napisal Andi Kleen.

ZOBACZ TAKE

       ip(7), raw(7), socket(7)

       RFC 768 dla protokolu datagramow uytkownika.
       RFC 1122 dla wymaga hostow.
       RFC 1191 dla opisu badania MTU cieki.

INFORMACJE O T/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju  Projektu  Tlumaczenia
       Manuali  i  moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
       opisem a rzeczywistym zachowaniem  opisywanego  programu  lub  funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.