Provided by: manpages-pl-dev_0.6-2_all bug

NAZWA

       getaddrinfo - tłumaczenie adresów i usług sieciowych

SKŁADNIA

       #include <sys/types.h>
       #include <sys/socket.h>
       #include <netdb.h>

       int getaddrinfo(const char *node, const char *service,
                       const struct addrinfo *hints,
                       struct addrinfo **res);

       void freeaddrinfo(struct addrinfo *res);

       const char *gai_strerror(int errcode);

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       Funkcja  getaddrinfo(3)  łączy w pojedynczym interfejsie funkcjonalność udostępnianą przez
       funkcje getipnodebyname(3),  getipnodebyaddr(3),  getservbyname  (3)  i  getservbyport(3).
       Przystosowana  do  wielowątkowości funkcja getaddrinfo(3) tworzy jedną lub więcej struktur
       adresowych gniazda,  które  mogą  być  wykorzystane  przez  funkcje  systemowe  bind(2)  i
       connect(2) do utworzenia gniazda klienta lub serwera.

       Funkcja  getaddrinfo(3) nie jest ograniczona do tworzenia struktur adresowych gniazd IPv4.
       Gniazda IPv6 mogą również być tworzone za jej pomocą, o ile dostępne jest wspomaganie  dla
       IPv6.  Te  struktury  adresowe  gniazd  mogą być bezpośrednio wykorzystane przez bind(2) i
       connect(2) do sporządzenia gniazda klienta lub serwera.

       Struktura addrinfo używana przez tę funkcję zawiera następujące pola:

       struct addrinfo {
           int     ai_flags;
           int     ai_family;
           int     ai_socktype;
           int     ai_protocol;
           size_t  ai_addrlen;
           struct sockaddr *ai_addr;
           char   *ai_canonname;
           struct addrinfo *ai_next;
       };

       getaddrinfo(3) ustawia res, aby  wskazywało  na  dynamicznie  zaalokowaną  listę  struktur
       addrinfo,  dowiązaną  do  pola  ai_next.   Istnieje  kilka powodów, dla których lista może
       zawierać więcej niż jedną strukturę addrinfo, włączając w to: posiadanie przez host  wielu
       interfejsów  sieciowych  oraz dostępność tej samej usługi poprzez wiele protokołów gniazda
       (na przykład, gdy jednym z nich jest SOCK_STREAM, a innym SOCK_DGRAM).

       Pola ai_family,  ai_socktype  i  ai_protocol  mają  to  samo  znaczenie  jako  odpowiednie
       parametry  wywołania  systemowego  socket(2).  Funkcja getaddrinfo(3) zwraca adresy gniazd
       IPv4 lub IPv6 (ai_family zostanie ustawione albo na PF_INET albo na PF_INET6).

       Parametr hints określa preferowany rodzaj gniazda lub protokół.  Wartość  NULL  dla  hints
       określa,  że  akceptowany jest dowolny adres sieciowy lub protokół.  Jeśli parametr ten ma
       wartość różną od NULL, wskazuje  on  na  strukturę  addrinfo,  w  której  pola  ai_family,
       ai_socktype  i  ai_protocol  określają  preferowany rodzaj gniazda.  PF_UNSPEC w ai_family
       określa dowolną rodzinę protokołów (na przykład IPv4  lub  IPv6).   0  w  ai_socktype  lub
       ai_protocol  stwierdza,  że akceptowalny jest również dowolny rodzaj gniazda lub protokół.
       Pole ai_flags zawiera dodatkowe, zdefiniowane poniżej, opcje.  Wiele znaczników podaje się
       jako ich logiczne OR.  Wszystkie pozostałe pola parametru hints muszą zawierać albo 0 albo
       wskaźnik NULL.

       Parametry node i service mogą być równe NULL, ale nie oba naraz.  node zawiera albo  adres
       sieciowy  w  postaci numerycznej (w formacie dziesiętnych liczb rozdzielonych kropkami dla
       IPv4, a w formacie szesnastkowym dla IPv6) albo nazwę hosta, dla  której  adresy  sieciowe
       będą  poszukiwane  i  rozwiązane.   Jeśli  pole  ai_flags parametru hints zawiera znacznik
       AI_NUMERICHOST, to parametr  node  musi  być  adresem  sieciowym  w  postaci  numerycznej.
       Znacznik  AI_NUMERICHOST  eliminuje  jakiekolwiek,  potencjalnie długotrwałe, poszukiwania
       adresu sieciowego hosta.

       Funkcja getaddrinfo(3) tworzy listę struktur  addrinfo,  po  jednej  dla  każdej  podstawy
       ograniczenia  adresów  sieciowych  narzuconej  przez parametr hints.  Gdy ai_flags w hints
       zawiera znacznik AI_CANONNAME, to ai_canonname  jest  ustawiane  tak,  aby  wskazywało  na
       oficjalną nazwę hosta.  ai_family, ai_socktype i ai_protocol zawierają parametry tworzenia
       gniazda.  Wskaźnik do adresu gniazda jest umieszczany w polu  ai_addr,  a  długość  adresu
       gniazda w bajtach jest umieszczana w polu ai_addrlen.

       Gdy  node  jest  równe  NULL, inicjalizacja adresu sieciowego w każdej ze struktur gniazda
       zależy od znacznika AI_PASSIVE, który jest ustawiany w polu ai_flags parametru hints.  Gdy
       znacznik  AI_PASSIVE  jest  ustawiony,  to  adres  sieciowy  w  każdej ze struktur gniazda
       pozostanie nieokreślony.  Jest to wykorzystywane przez programy serwerów, które zamierzają
       przyjmować  połączenia od klientów na dowolny adres sieciowy.  Gdy znacznik AI_PASSIVE nie
       jest ustawiony, to adres sieciowy zostanie ustawiony na adres interfejsu  loopback.   Jest
       to  wykorzystywane  przez  programy  klienckie,  które  zamierzają połączyć się z serwerem
       działającym na tym samym hoście.

       service ustawia numer portu w adresie sieciowym każdej ze struktur gniazda.  Jeśli service
       jest różne od NULL, to numer portu pozostanie niezainicjalizowany.

       Funkcja  freeaddrinfo(3)  zwalnia  pamięć  przydzieloną dla dynamicznie zaalokowanej listy
       res.

WARTOŚĆ ZWRACANA

       getaddrinfo(3) zwraca 0, gdy  zakończy  się  pomyślnie,  a  w  przeciwnym  razie  jeden  z
       następujących niezerowych kodów błędów:

       EAI_FAMILY
              Zupełny brak wsparcia dla żądanej rodziny adresów.

       EAI_SOCKTYPE
              Zupełny brak wsparcia dla żądanego rodzaju gniazda.

       EAI_BADFLAGS
              ai_flags zawiera nieprawidłowe znaczniki.

       EAI_NONAME
              node  lub  service jes nieznane.  Ten błąd jest również zwracany, gdy zarówno node,
              jak i service są równe NULL.

       EAI_SERVICE
              Żądana usługa nie jest dostępna dla zadanego rodzaju gniazda.  Może ona jednak  być
              dostępna dla innego rodzaju gniazda.

       EAI_ADDRFAMILY
              Podany host nie posiada żadnego adresu sieciowego dla zadanej rodziny adresów.

       EAI_NODATA
              Podany host istnieje, ale nie zdefiniowano dla niego żadnego adresu sieciowego.

       EAI_MEMORY
              Brak pamięci.

       EAI_FAIL
              Serwer nazw zwrócił błąd trwały.

       EAI_AGAIN
              Serwer nazw zwrócił błąd tymczasowy.  Należy spróbować później.

       EAI_SYSTEM
              Inny błąd systemowy; szczegółowe informacje zawarte są w errno.

       Funkcja  gai_strerror(3)  tłumaczy  te  kody  błędów  na  czytelny  dla  człowieka  napis,
       odpowiedni dla zgłaszania błędów.

ZOBACZ TAKŻE

       getipnodebyname(3), getipnodebyaddr(3)

INFORMACJE O TŁUMACZENIU

       Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia  Manuali  i  może
       nie  być  aktualne.  W  razie  zauważenia  różnic  między  powyższym opisem a rzeczywistym
       zachowaniem opisywanego programu lub  funkcji,  prosimy  o  zapoznanie  się  z  oryginalną
       (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 3 getaddrinfo

       Prosimy  o  pomoc  w  aktualizacji stron man - więcej informacji można znaleźć pod adresem
       http://sourceforge.net/projects/manpages-pl/.