sethostent

GETHOSTBYNAME(3)        PodrÄcznik programisty Linuksa        GETHOSTBYNAME(3)



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():
           Od glibc 2.19:
               _DEFAULT_SOURCE
           Glibc w wersji do 2.19 wÅÄcznie:
               _BSD_SOURCE || _SVID_SOURCE

       herror(), hstrerror():
           Od glibc 2.19:
               _DEFAULT_SOURCE
           Glibc 2.8 do 2.19:
               _BSD_SOURCE || _SVID_SOURCE
           Przed glibc 2.8:
               brak

       h_errno:
           Od glibc 2.19:
               _DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L
           Glibc 2.12 do 2.19:
               _BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L
           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)). Jeżeli
       name jest adresem IPv4, 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.

       Zapytania o nazwy domenowe z gethostbyname() i gethostbyaddr() polegajÄ
       na skonfigurowanych źródÅach Name Service Switch (nsswitch.conf(5))
       lub lokalnym serwerze nazw (named(8)). DomyÅlnÄ akcjÄ jest odpytanie
       skonfigurowanych źródeŠName Service Switch (nsswitch.conf(5)), a
       jeÅli siÄ to nie powiedzie, lokalnego serwera nazw (named(8)).

   Historia
       Plik nsswitch.conf(5) jest wspóÅczesnym sposobem kontrolowania
       kolejnoÅci wyszukiwaÅ komputerów.

       W glibc 2.4 i wczeÅniejszych, do okreÅlenia kolejnoÅci wyszukiwaÅ
       komputerów sÅużyÅo sÅowo kluczowe order zdefiniowane w /etc/host.conf
       (host.conf(5)).


       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_DATA
              Å»Ädana nazwa jest prawidÅowa, lecz nie posiada adresu IP. Inny
              typ żÄdania skierowany do serwera nazw dla tej domeny może
              zwróciÄ odpowiedź. StaÅa NO_ADDRESS jest synonimem NO_DATA.

       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)

ATRYBUTY
       Informacje o pojÄciach używanych w tym rozdziale można znaleÅºÄ w
       podrÄczniku attributes(7).

       ┌───────────────────┬────────────────────────┬───────────────────────────────┐
       │Interfejs          Atrybut                WartoÅÄ                       │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │gethostbyname()    │ BezpieczeÅstwo wÄtkowe │ MT-Unsafe race:hostbyname env │
       │                   │                        │ locale                        │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │gethostbyaddr()    │ BezpieczeÅstwo wÄtkowe │ MT-Unsafe race:hostbyaddr env │
       │                   │                        │ locale                        │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │sethostent(),      │ BezpieczeÅstwo wÄtkowe │ MT-Unsafe race:hostent env    │
       │endhostent(),      │                        │ locale                        │
       │gethostent_r()     │                        │                               │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │herror(),          │ BezpieczeÅstwo wÄtkowe │ MT-Safe                       │
       │hstrerror()        │                        │                               │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │gethostent()       │ BezpieczeÅstwo wÄtkowe │ MT-Unsafe race:hostent        │
       │                   │                        │ race:hostentbuf env locale    │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │gethostbyname2()   │ BezpieczeÅstwo wÄtkowe │ MT-Unsafe race:hostbyname2    │
       │                   │                        │ env locale                    │
       ├───────────────────┼────────────────────────┼───────────────────────────────┤
       │gethostbyaddr_r(), │ BezpieczeÅstwo wÄtkowe │ MT-Safe env locale            │
       │gethostbyname_r(), │                        │                               │
       │gethostbyname2_r() │                        │                               │
       └───────────────────┴────────────────────────┴───────────────────────────────┘
       W powyższej tabeli, hostent w race:hostent oznacza, że jeÅli któraÅ
       z funkcji sethostent(), gethostent(), gethostent_r(), lub endhostent(3)
       jest używana równolegle w różnych wÄtkach programu, może nastÄpiÄ
       sytuacja wyÅcigu danych.

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 4.07 projektu Linux
       man-pages. Opis projektu, informacje dotyczÄce zgÅaszania bÅÄdów oraz
       najnowszÄ wersjÄ oryginaÅu można znaleÅºÄ pod adresem
       https://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Ä  4.07 oryginaÅu.



                                  2016-03-15                  GETHOSTBYNAME(3)