Linux.pl
Opcje wyszukiwania podręcznika man:
Lista stron man zaczynających się od znaku:
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   ALPHA   NUM   OTHER   ALL
UDP(7)                  Podręcznik programisty Linuksa                  UDP(7)

NAZWA
       udp - protokół datagramów użytkownika dla IPv4

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

OPIS
       Jest   to   implementacja  opisanego  w  RFC 768  protokołu  datagramów
       użytkownika.  Implementuje  ona  usługę  bezpołączeniowych,  niepewnych
       pakietów datagramowych.  Kolejność pakietów może ulec zmianie przed ich
       dotarciem do celu, mogą  one  też  zostać  powielone.  UDP  generuje  i
       sprawdza sumy kontrolne, aby wykryć błędy transmisji.

       Podczas  tworzenia  gniazda  UDP,  jego  adresy:  lokalny  i  zdalny są
       nieokreślone.  Datagramy można wysyłać natychmiast za pomocą  sendto(2)
       lub  sendmsg(2)   podając  jako argument prawidłowy adres docelowy. Gdy
       dla gniazda jest wywołane connect(2),  ustawiany  jest  domyślny  adres
       docelowy  i  od  tego momentu można wysyłać datagramy za pomocą send(2)
       lub write(2)   nie  podając  adresu  docelowego.   Nadal  możliwe  jest
       wysyłanie  do innych adresów docelowych podając adres funkcji sendto(2)
       lub sendmsg(2).  Aby odbierać pakiety,  gniazdo  może  zostać  najpierw
       przypisane  do  adresu lokalnego za pomocą bind(2).  W przeciwnym przy-
       padku, 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 paki-
       etu, gdy pakiet jest większy niż bufor, pakiet jest obcinany  i  ustaw-
       iany jest znacznik MSG_TRUNC.  MSG_WAITALL nie jest wspierane.

       Opcje  IP  mogą  być  wysyłane  lub  odbierane  za pomocą opcji gniazda
       opisanych w ip(7).  Są one przetwarzane przez jądro  tylko  wtedy,  gdy
       włączona  jest  odpowiednia kontrolka systemowa (ale nadal są przekazy-
       wane do programu użytkownika,  nawet  gdy  kontrolka  jest  wyłączona).
       Zobacz ip(7).

       Gdy   przy  wysyłaniu  ustawiony  jest  znacznik  MSG_DONTROUTE,  adres
       docelowy musi odnosić się do lokalnego adresu interfejsu i pakiet  jest
       wysyłany jedynie do tego interfejsu.

       UDP  dzieli  pakiet na fragmenty, gdy jego całkowity rozmiar przekracza
       wartość MTU (Maximum Transmission Unit) dla interfejsu.  Bardziej przy-
       jazną dla sieci alternatywą jest korzystanie z badania MTU ścieżki, jak
       opisano w rozdziale IP_PMTU_DISCOVER podręcznika ip(7).

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

OBSŁUGA BŁĘDÓW
       Wszystkie błędy krytyczne są przekazywane do programu użytkownika  jako
       wartość  zwracana,  nawet  gdy  gniazdo  nie jest połączone. Dotyczy to
       także błędów asynchronicznych otrzymywanych z sieci. Można też otrzymać
       błąd  dotyczący  pakietu  wcześniej  wysłanego  z  danego  gniazda.  To
       zachowanie różni się od wielu innych implementacji  gniazd  BSD,  które
       nie   przekazują  żadnych  błędów,  gdy  gniazdo  nie  jest  połączone.
       Zachowanie Linuksa ma oparcie w RFC 1122.

       Dla zgodności z kodem odziedziczonym w wersjach 2.0 i 2.2 jądra Linuksa
       było  możliwe  ustawienie opcji SOL_SOCKET SO_BSDCOMPAT, aby otrzymywać
       błędy zdalne tylko wtedy,  gdy  gniazdo  jest  połączone  (z  wyjątkiem
       EPROTO  i  EMSGSIZE).   Błędy wygenerowane lokalnie są zawsze przekazy-
       wane. Obsługa tej opcji została usunięta w  kolejnych  wersjach  jądra;
       szczegóły można znaleźć w socket(7).

       Gdy  włączona jest opcja IP_RECVERR, wszystkie błędy są przechowywane w
       kolejce błędów gniazda i mogą być odczytywane za pomocą  recvmsg(2)   z
       ustawionym znacznikiem MSG_ERRQUEUE.

OPCJE GNIAZD
       Aby  ustawić lub pobrać opcję gniazda UDP, należy wywołać getsockopt(2)
       w celu odczytania lub setsockopt(2) w celu zapisania opcji,  ustawiając
       argument poziomu opcji na IPPROTO_UDP.

       UDP_CORK (od Linuksa 2.5.44)
              Jeśli  ta  opcja zostanie włączona, to wszystkie dane na wyjściu
              tego  gniazda  są  łączone  do  pojedynczego  datagramu,   który
              zostanie  wysłany,  kiedy  ta opcja zostanie wyłączona. Opcja ta
              nie powinna być używana w kodzie, który  w  zamierzeniu  ma  być
              przenośny.

IOCTL
       Do  poniższych kontrolek wejścia/wyjścia można uzyskać dostęp za pomocą
       funkcji ioctl(2).  Prawidłowa składnia to:

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

       FIONREAD (SIOCINQ)
              Pobiera  wskaźnik  do  argumentu  całkowitego.  Zwraca   rozmiar
              następnego  oczekującego  datagramu w podanej liczbie bajtów lub
              0, gdy nie czeka żaden pakiet.

       TIOCOUTQ (SIOCOUTQ)
              Zwraca  liczbę  bajtów  danych  w  lokalnej   kolejce   pakietów
              wychodzących.   Wspierane przez Linuksa 2.4 i późniejsze wersje.

       Ponadto wspierane są  wszystkie  kontrolki  wejścia/wyjścia  opisane  w
       ip(7) i socket(7).

BŁĘDY
       Przy wysyłaniu lub odbieraniu za pośrednictwem gniazd UDP mogą wystąpić
       wszystkie błędy zdefiniowane dla socket(7)  lub ip(7).

       ECONNREFUSED Z adresem docelowym nie  był  skojarzony  żaden  odbiorca.
       Może  to  być  spowodowane  przez uprzednie wysłanie pakietu za pośred-
       nictwem danego gniazda.

WERSJE
       IP_RECVERR pojawiło się w Linuksie 2.2.

PODZIĘKOWANIA
       Tę strone podręcznika napisał Andi Kleen.

ZOBACZ TAKŻE
       ip(7), raw(7), socket(7)

       RFC 768 dla protokołu datagramów użytkownika.
       RFC 1122 dla wymagań hostów.
       RFC 1191 dla opisu badania MTU ścieżki.

Strona podręcznika systemu Linux  1998-10-02                            UDP(7)

Time taken: 0.00026 seconds


Created with the man page lookup class by Andrew Collington, php@amnuts.com