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)