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

NAZWA

       gethostbyname,   gethostbyaddr,   sethostent,  gethostent,  endhostent,  h_errno,  herror,
       hstrerror,    gethostbyaddr_r,    gethostbyname2,    gethostbyname2_r,    gethostbyname_r,
       gethostent_r - zwraca wpis sieciowy komputera

SKŁADNIA

       #include <netdb.h>
       extern int h_errno;

       struct hostent *gethostbyname(const char *nazwa);

       #include <sys/socket.h>       /* dla AF_INET */
       struct hostent *gethostbyaddr(const void *addr,
                                     socklen_t len, int type);

       void sethostent(int stayopen);

       void endhostent(void);

       void herror(const char *s);

       const char *hstrerror(int err);

       /* rozszerzenie System V/POSIX */
       struct hostent *gethostent(void);

       /* rozszerzenia GNU */
       struct hostent *gethostbyname2(const char *nazwa, int af);

       int gethostent_r(
               struct hostent *ret, char *buf, size_t buflen,
               struct hostent **result, int *h_errnop);

       int gethostbyaddr_r(const void *addr, socklen_t len, int type,
               struct hostent *ret, char *buf, size_t buflen,
               struct hostent **result, int *h_errnop);

       int gethostbyname_r(const char *name,
               struct hostent *ret, char *buf, size_t buflen,
               struct hostent **result, int *h_errnop);

       int gethostbyname2_r(const char *name, int af,
               struct hostent *ret, char *buf, size_t buflen,
               struct hostent **result, int *h_errnop);

   Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

       gethostbyname2(), gethostent_r(), gethostbyaddr_r(), gethostbyname_r(),
       gethostbyname2_r():
           _BSD_SOURCE || _SVID_SOURCE

       herror(), hstrerror():
           Od glibc 2.8:
               _BSD_SOURCE || _SVID_SOURCE
           Przed glibc 2.8:
               brak

       h_errno:
           Od glibc 2.12:
               _BSD_SOURCE || _SVID_SOURCE ||
                   (_POSIX_C_SOURCE < 200809L && _XOPEN_SOURCE < 700)
           Przed glibc 2.12:
               brak

OPIS

       Funkcje gethostbyname*(), gethostbyaddr*(), herror()  oraz  hstrerror()  są  przestarzałe.
       Aplikacje powinny zamiast nich używaćgetaddrinfo(3), getnameinfo(3) i gai_strerror(3).

       Funkcja gethostbyname() dla danego komputera name zwraca strukturę typu hostent. name jest
       tutaj albo nazwą komputera, albo adresem IPv4  w  standardowej  notacji  z  kropkami  (jak
       opisano  w inet_addr(3)), albo adresem IPv6 w notacji ze średnikami (i być może kropkami).
       (Proszę przeczytać RFC 1984, aby uzyskać opis adresów IPv6). Jeżeli name jest adresem IPv4
       lub  IPv6,  to gethostbyname()  nie wykonuje żadnych sprawdzeń i po prostu kopiuje name do
       pola h_name oraz jej odpowiednik struct in_addr do pola h_addr_list[0] zwracanej struktury
       hostent.   Jeżeli   name  nie  kończy  się  kropką  oraz  ustawiono  zmienną  środowiskową
       HOSTALIASES, to wyszukiwanie name zacznie się od  pliku  z  aliasami,  wskazywanego  przez
       HOSTALIASES  (format  tego  pliku opisany jest w hostname(7)). Bieżąca domena i jej domeny
       nadrzędne są przeszukiwane, chyba że name kończy się kropką.

       Funkcja gethostbyaddr() zwraca strukturę typu hostent dla zadanego adresu addr o  długości
       len  i typie adresu type. Poprawnymi typami adresów są AF_INET i AF_INET6. Adres komputera
       jest wskaźnikiem do struktury o typie zależnym od typu adresu, na przykład struct  in_addr
       * (najprawdopodobniej otrzymany przez wywołanie inet_addr(3)) dla adresu o typie AF_INET.

       Funkcja  sethostent()  określa,  jeżeli  stayopen  jest  prawdziwe  (1), że do odpytywania
       serwera nazw będzie użyte połączenie TCP i to połączenie będzie otwarte podczas  kolejnych
       zapytań. W przeciwnym wypadku serwer nazw będzie odpytywany przy użyciu datagramów UDP.

       Funkcja endhostent() kończy połączenie TCP odpytywania serwera nazw.

       (Przestarzała)  funkcja  herror()  wypisuje na standardowe wyjście błędów stderr komunikat
       błędu przypisany do bieżącej wartości zmiennej h_errno.

       (Przestarzała) funkcja hstrerror()  dla  przekazanego  numeru  błędu  (zazwyczaj  h_errno)
       zwraca odpowiadający mu komunikat błędu.

       Funkcje  gethostbyname()  i  gethostbyaddr()  używają  do  odpytywania  serwera kombinacji
       któregokolwiek bądź wszystkich serwerów nazw named(8), poszczególnych linii  z  /etc/hosts
       oraz Systemu Informacji Sieciowej (Network Information Service - NIS lub YP), w zależności
       od zawartości linii order w pliku /etc/host.conf. Domyślnie najpierw odpytywane są serwery
       named(8), a następnie przeglądany jest /etc/hosts.

       Struktura hostent zdefiniowana w <netdb.h> następująco:

           struct hostent {
               char  *h_name;            /* oficjalna nazwa komputera */
               char **h_aliases;         /* lista aliasów */
               int    h_addrtype;        /* typ adresu komputera */
               int    h_length;          /* długość adresu */
               char **h_addr_list;       /* lista adresów */
           }
           #define h_addr h_addr_list[0] /* dla zachowania zgodności */
                                         /* z wcześniejszymi wersjami */

       Struktra hostent składa się z:

       h_name Oficjalna nazwa komputera.

       h_aliases
              Zakończona wskaźnikiem null tablica alternatywnych nazw komputera.

       h_addrtype
              Typ adresu; obecnie zawsze jest to AF_INET lub AF_INET6.

       h_length
              Długość adresu w bajtach.

       h_addr_list
              Zakończona  wskaźnikiem  null  tablica  adresów  sieciowych  komputera (w sieciowym
              porządku bajtów).

       h_addr Pierwszy adres z h_addr_list - dla zachowania zgodności ze wcześniejszymi wersjami

WARTOŚĆ ZWRACANA

       Funkcje gethostbyname() i gethostbyaddr() zwracają strukturę hostent lub wskaźnik  null  w
       przypadku błędu. W razie błędu, zmienna h_errno przechowuje numer błędu. Wartość zwrócona,
       jeśli jest różna od null, może wskazywać na statyczne dane, patrz UWAGI poniżej.

BŁĘDY

       Zmienna h_errno może przyjmować następujące wartości:

       HOST_NOT_FOUND
              Podany komputer jest nieznany.

       NO_ADDRESS lub NO_DATA
              Żądana nazwa jest poprawna, ale nie ma adresu IP.

       NO_RECOVERY
              Wystąpił trwały błąd serwera nazw.

       TRY_AGAIN
              Autorytatywny serwer  nazw  zwrócił  tymczasowy  błąd.  Proszę  spróbować  ponownie
              później.

PLIKI

       /etc/host.conf
              plik konfiguracyjny biblioteki resolver

       /etc/hosts
              plik bazy danych komputerów

       /etc/nsswitch.conf
              plik konfiguracyjny serwisów nazw (NSS)

ZGODNE Z

       POSIX.1-2001   definiuje  gethostbyname(),  gethostbyaddr(),  sethostent(),  endhostent(),
       gethostent() i h_errno; gethostbyname(),  gethostbyaddr()  i  h_errno  są  oznaczone  jako
       starzejące   się.  POSIX.1-2008  usuwa  definicje  gethostbyname(),  gethostbyaddr()  oraz
       h_errno, zalecając używanie zamiast nich funkcjigetaddrinfo(3) i getnameinfo(3).

UWAGI

       Funkcje gethostbyname() i gethostbyaddr()  mogą zwracać wskaźniki do  danych  statycznych,
       które mogą być nadpisane przez kolejne wywołania. Kopiowanie struct hostent nie wystarcza,
       ponieważ zawiera ona wskaźniki - wymagane jest skopiowanie wszystkiego.

       W oryginalnej implementacji BSD,  argument  len  funkcji  gethostbyname()  był  typu  int.
       Standard  SUS-v2  jest  błędny  i określa parametr len funkcji gethostbyaddr() jako będący
       typu size_t. (Nie jest to właściwe, ponieważ musi to być typ int, którym size_t nie  jest.
       POSIX.1-2001 używa socklen_t, co jest OK). Patrz także accept(2).

       Prototyp BSD funkcji gethostbyaddr() używa const char * dla trzeciego argumentu.

   Rozszerzenie System V/POSIX
       POSIX wymaga, aby wywołanie gethostent() zwróciło następny wpis w bazie danych komputerów.
       Jeśli używany jest DNS/BIND nie ma to większego sensu, ale  może  być  uzasadnione,  jeśli
       baza  danych  komputerów jest plikiem, który można odczytać linia po linii. Wiele systemów
       funkcja o tej nazwie czyta  plik  /etc/hosts.  Może  być  on  dostępny  tylko  wtedy,  gdy
       biblioteka  została skompilowana bez wsparcia dla DNS-u. Wersja glibc ignoruje wpisy IPv6.
       Ta funkcja nie jest wielowątkowa, glibc dodaje jej  wielowątkową wersję gethostent_r().

   Rozszerzenia GNU
       Glibc2 ma także funkcję gethostbyname2(), która działa jak  gethostbyname(),  ale  pozwala
       określić rodzinę adresów, do której musi należeć zadany adres.

       Glibc2 ma także wielowątkowe wersje gethostent_r(), gethostbyaddr_r(), gethostbyname_r() i
       gethostbyname2_r(). Proces wywołujący przekazuje strukturę hostent  w  ret,  który  będzie
       wypełniony,  gdy  funkcja  zakończy  się  pomyślnie,  oraz  tymczasowy bufor roboczy buf o
       rozmiarze buflen. Po pomyślnym wywołaniu, result będzie wskazywał na wynik. W razie  błędu
       lub gdy nie znaleziono żadnego wpisu result będzie ustawiony na NULL. Funkcje zwracają one
       0 w przypadku powodzenia lub liczbę różną od zera w razie błędu. Oprócz błędów, które mogą
       zwrócić niewielowątkowe wersje tych funkcji, funkcje mogą zwróć błąd RANGE, jeśli buf jest
       za mały - w takim wypadku należy powtórzyć wywołanie funkcji z większym buforem.  Globalna
       zmienna  h_errno  nie  jest  modyfikowana,  ale  numer błędu jest przekazywany w zmiennej,
       której adres został podany w h_errnop.

BŁĘDY

       gethostbyname() nie rozpoznaje komponentów oddzielonego  kropkami  łańcucha  adresu  IPv4,
       jeśli są one wyrażone jako liczby szesnastkowe.

ZOBACZ TAKŻE

       getaddrinfo(3),   getnameinfo(3),   inet(3),   inet_ntop(3),   inet_pton(3),  resolver(3),
       hosts(5), nsswitch.conf(5), hostname(7), named(8)

O STRONIE

       Angielska wersja tej strony  pochodzi  z  wydania  3.71  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania błędów, oraz najnowszą wersję oryginału można
       znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami polskiego tłumaczenia  niniejszej  strony  podręcznika  man  są:  Robert  Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    3.71
       oryginału.

                                            2014-03-11                           GETHOSTBYNAME(3)