Provided by: manpages-pl-dev_20060617-3_all bug

NAZWA

       gethostbyname, gethostbyaddr, sethostent, endhostent, herror, hstrerror
       - zwro wpis sieciowy komputera

SK/LADNIA

       #include <netdb.h>
       extern int h_errno;

       struct hostent *gethostbyname(const char *nazwa);

       #include <sys/socket.h>        /* dla AF_INET */
       struct hostent *gethostbyaddr(const char *adres,
         int dlug, int typ);

       void sethostent(int stayopen);

       void endhostent(void);

       void herror(const char *s);

       const char *hstrerror(int err);

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

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

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

OPIS

       Funkcja gethostbyname() dla danego  komputera  nazwa   zwraca  struktur
       typu hostent. Nazwa jest tutaj albo nazw komputera, albo adresem IPv4 w
       standardowej notacji  z  kropkami,  albo  adresem  IPv6  w  notacji  ze
       rednikami  (i  by  moe kropkami). (Prosz przeczyta RFC 1984, aby uzyska
       opis adresow IPv6).   Jeeli  nazwa  jest  adresem  Ipv4  lub  IPv6,  to
       gethostbyname()  nie  wykonuje adnych sprawdze i po prostu kopiuje nazw
       do  pola  h_name  oraz  jej  odpowiednik   struct   in_addr   do   pola
       h_addr_list[0]  zwracanej  struktury hostent.  Jeeli nazwa nie koczy si
       kropk oraz ustawiono zmienn  rodowiskow  HOSTALIASES,  to  wyszukiwanie
       nazwy  zacznie  si od pliku z aliasami, wskazywanego przez HOSTALIASES.
       (format tego pliku opisany jest w hostname(7)).  Bieca  domenta  i  jej
       domeny nadrzdne s przeszukiwane, chyba e nazwa koczy si kropk.

       Funkcja  gethostbyaddr()  zwraca  struktur   typu  hostent dla zadanego
       adresu adres o  dlugoci  dlug  i  typie  adresu  typ.  Obecnie  jedynym
       poprawnym typem adresu jest AF_INET.

       Funkcja  sethostent()  okrela,  jeeli stayopen jest prawdziwe (1), e do
       odpytywania serwera nazw bdzie uyte polczenie TCP i to polczenie  bdzie
       otwarte  podczas  kolejnych  zapyta.  W  przeciwnym wypadku serwer nazw
       bdzie odpytywany przy uyciu datagramow UDP.

       Funkcja endhostent() koczy polczenie TCP odpytywania serwera nazw.

       (Przestarzala) funkcja herror() wypisuje na  standardowe  wyjcie  bldow
       komunikat bldu przypisany do biecej wartoci zmiennej h_errno.

       (Przestarzala)   funkcja   hstrerror()  dla  przekazanego  numeru  bldu
       (zazwyczaj h_errno) zwraca odpowiadajcy mu komunikat bldu.

       Funkcje gethostbyname() i gethostbyaddr() uywaj do odpytywania  serwera
       kombinacji   ktoregokolwiek   bd  wszystkich  serwerow  nazw  named(8),
       wydzielonych linii z  /etc/hosts,  oraz  Systemu  Informacji  Sieciowej
       (Network  Information  Service  -  NIS lub YP), w zalenoci od zawartoci
       linii order w  pliku  /etc/host.conf.   (Prosz  przeczyta  resolv+(8)).
       Domylnie  najpierw odpytywane s serwery named(8), a nastpnie przegldany
       jest /etc/hosts.

       Struktura hostent zdefiniowana w <netdb.h> nastpujco:

              struct hostent {
                      char    *h_name;        /* oficjalna nazwa komputera */
                      char    **h_aliases;    /* lista aliasow */
                      int     h_addrtype;     /* typ adresu komputera */
                      int     h_length;       /* dlugo adresu */
                      char    **h_addr_list;  /* lista adresow */
              }
              #define h_addr  h_addr_list[0]  /* dla zachowania zgodnoci  */
                                              /* z wczeniejszymi wersjami */

       Struktra hostent sklada si z:

       h_name Oficjalna nazwa komputera.

       h_aliases
              Zakoczona zerem tablica alternatywnych nazw komputera.

       h_addrtype
              Typ adresu; obecnie zawsze jest to AF_INET.

       h_length
              Dlugo adresu w bajtach.

       h_addr_list
              Zakoczona zerem tablica adresow sieciowych komputera w sieciowym
              porzdku bajtow (network byte order).

       h_addr Pierwszy  adres  z  h_addr_list  -  dla  zachowania  zgodnoci ze
              wczeniejszymi wersjami

WARTO ZWRACANA

       Funkcje gethostbyname() i gethostbyaddr() zwracaj struktur hostent  lub
       wskanik   NULL   w  przypadku  bldu.  W  razie  bldu,  zmienna  h_errno
       przechowuje numer bldu.

B/LDY

       Zmienna h_errno moe przyjmowa nastpujce wartoci:

       HOST_NOT_FOUND
              Podany komputer jest nieznany.

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

       NO_RECOVERY
              Wystpil trwaly bld serwera nazw.

       TRY_AGAIN
              Autorytatywny serwer nazw zwrocil tymczasowy bld. Prosz sprobowa
              ponownie poniej.

PLIKI

       /etc/host.conf
              plik konfiguracyjny resolver configuration file

       /etc/hosts
              plik bazy danych komputerow

ZGODNE Z

       BSD 4.3.

UWAGI

       Standard   SUS-v2   jest   bldny   i   okrela   parametr   len  funkcji
       gethostbyaddr() jako majcy typ size_t.  (No nie jest  wlaciwe,  poniewa
       musi  to  by  typ  int,  ktorym size_t nie jest. POSIX 1003.1-2001 uywa
       socklen_t, co jest OK)

       Funkcje gethostbyname() i gethostbyaddr() mog zwraca wskaniki do danych
       statycznych, ktore mog by nadpisane przez kolejne wywolania. Kopiowanie
       struct hostent nie wystarcza, poniewa zawiera ona wskaniki  -  wymagane
       jest skopiowanie wszystkiego.

       Glibc2    ma   take   funkcj   gethostbyname2(),   ktora   dziala   jak
       gethostbyname(), ale pozwala okreli  rodzin  adresow,  do  ktorej  musi
       nalee zadany adres.

       Glibc2    ma    take    wielowtkowe    wersje    gethostbyname_r()    i
       gethostbyname2_r().  Zwracaj one 0 w przypadku powodzenia i  niezero  w
       razie  bldu.  Wynik  funkcji  jest przechowywany w strukturze o adresie
       ret.  Po wywolaniu  funkcji  *result  bdzie  NULL  w  razie  bldu  albo
       wskanikiem  do  wyniku,  gdy funkcja zakoczy si powodzeniem. Pomocnicze
       dane s przechowywane w buforze buf o dlugoci buflen.  (Jeeli bufor jest
       za  maly,  to  funkcje  te zwroc ERANGE.)  Globalna zmienna h_errno nie
       jest modyfikowana, ale numer bldu jest przekazywany w zmiennej,  ktorej
       adres zostal podany w h_errnop.

       POSIX  1003.1-2001  traktuje  gethostbyaddr()  i  gethostbyname()  jako
       spucizn i wprowadza

       struct hostent *getipnodebyaddr (const void *restrict addr,
         socklen_t len, int type, int *restrict error_num);

       struct hostent *getipnodebyname (const char *name,
         int type, int flags, int *error_num);

ZOBACZ TAKE

       resolver(3), hosts(5), hostname(7), resolv+(8), named(8)

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.