.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified 1993-05-22, David Metcalfe .\" Modified 1993-07-25, Rik Faith (faith@cs.unc.edu) .\" Modified 1997-02-16, Andries Brouwer (aeb@cwi.nl) .\" Modified 1998-12-21, Andries Brouwer (aeb@cwi.nl) .\" Modified 2000-08-12, Andries Brouwer (aeb@cwi.nl) .\" Modified 2001-05-19, Andries Brouwer (aeb@cwi.nl) .\" Modified 2002-08-05, Michael Kerrisk .\" Modified 2004-10-31, Andries Brouwer .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH GETHOSTBYNAME 3 "15 września 2017 r." "" "Podręcznik programisty Linuksa" .SH NAZWA gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, gethostbyname_r, gethostent_r \- zwraca wpis sieciowy komputera .SH SKŁADNIA .nf \fB#include \fP \fBextern int h_errno;\fP .PP \fBstruct hostent *gethostbyname(const char *\fP\fInazwa\fP\fB);\fP \fB#include \fP /* dla AF_INET */ \fBstruct hostent *gethostbyaddr(const void *\fP\fIaddr\fP\fB,\fP \fB socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB);\fP .PP \fBvoid sethostent(int \fP\fIstayopen\fP\fB);\fP .PP \fBvoid endhostent(void);\fP .PP \fBvoid herror(const char *\fP\fIs\fP\fB);\fP .PP \fBconst char *hstrerror(int \fP\fIerr\fP\fB);\fP .PP /* Rozszerzenie systemu V/POSIX */ \fBstruct hostent *gethostent(void);\fP .PP /* Rozszerzenia GNU */ \fBstruct hostent *gethostbyname2(const char *\fP\fIname\fP\fB, int \fP\fIaf\fP\fB);\fP .PP \fBint gethostent_r(\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .PP \fBint gethostbyaddr_r(const void *\fP\fIaddr\fP\fB, socklen_t \fP\fIlen\fP\fB, int \fP\fItype\fP\fB,\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .PP \fBint gethostbyname_r(const char *\fP\fIname\fP\fB,\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .PP \fBint gethostbyname2_r(const char *\fP\fIname\fP\fB, int \fP\fIaf,\fP \fB struct hostent *\fP\fIret\fP\fB, char *\fP\fIbuf\fP\fB, size_t \fP\fIbuflen\fP\fB,\fP \fB struct hostent **\fP\fIresult\fP\fB, int *\fP\fIh_errnop\fP\fB);\fP .fi .PP .in -4n Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .in .PP .PD 0 .ad l \fBgethostbyname2\fP(), \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP(): .RS 4 .TP 4 Od glibc 2.19: _DEFAULT_SOURCE .TP 4 Glibc w wersji do 2.19 włącznie: _BSD_SOURCE || _SVID_SOURCE .RE .PD .PP .PD 0 \fBherror\fP(), \fBhstrerror\fP(): .RS 4 .TP 4 Od glibc 2.19: _DEFAULT_SOURCE .TP 4 Glibc 2.8 do 2.19: _BSD_SOURCE || _SVID_SOURCE .TP Przed glibc 2.8: none .RE .PD .PP .PD 0 \fBh_errno\fP: .RS 4 .TP 4 Od glibc 2.19: _DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L .TP 4 Glibc 2.12 do 2.19: _BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L .TP Przed glibc 2.12: none .RE .ad b .PD .SH OPIS Funkcje \fBgethostbyname*\fP(), \fBgethostbyaddr*\fP(), \fBherror\fP() oraz \fBhstrerror\fP() są przestarzałe. Aplikacje powinny zamiast nich używać\fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3) i \fBgai_strerror\fP(3). .PP Funkcja \fBgethostbyname\fP() dla danego komputera \fIname\fP zwraca strukturę typu \fIhostent\fP. \fIname\fP jest tutaj albo nazwą komputera, albo adresem IPv4 w standardowej notacji z kropkami (jak opisano w \fBinet_addr\fP(3)). Jeżeli \fIname\fP jest adresem IPv4, to \fBgethostbyname\fP() nie wykonuje żadnych sprawdzeń i po prostu kopiuje \fIname\fP do pola \fIh_name\fP oraz jej odpowiednik \fIstruct in_addr\fP do pola \fIh_addr_list[0]\fP zwracanej struktury \fIhostent\fP. Jeżeli \fIname\fP nie kończy się kropką oraz ustawiono zmienną środowiskową \fBHOSTALIASES\fP, to wyszukiwanie \fIname\fP zacznie się od pliku z aliasami, wskazywanego przez \fBHOSTALIASES\fP (format tego pliku opisany jest w \fBhostname\fP(7)). Bieżąca domena i jej domeny nadrzędne są przeszukiwane, chyba że \fIname\fP kończy się kropką. .PP Funkcja \fBgethostbyaddr\fP() zwraca strukturę typu \fIhostent\fP dla zadanego adresu \fIaddr\fP o długości \fIlen\fP i typie adresu \fItype\fP. Poprawnymi typami adresów są\ \fBAF_INET\fP i \fBAF_INET6\fP. Adres komputera jest wskaźnikiem do struktury o typie zależnym od typu adresu, na przykład \fIstruct in_addr *\fP (najprawdopodobniej otrzymany przez wywołanie \fBinet_addr\fP(3)) dla adresu o typie \fBAF_INET\fP. .PP Funkcja \fBsethostent\fP() określa, jeżeli \fIstayopen\fP 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. .PP Funkcja \fBendhostent\fP() kończy połączenie TCP odpytywania serwera nazw. .PP (Przestarzała) funkcja \fBherror\fP() wypisuje na standardowe wyjście błędów \fIstderr\fP komunikat błędu przypisany do bieżącej wartości zmiennej \fIh_errno\fP. .PP (Przestarzała) funkcja \fBhstrerror\fP() dla przekazanego numeru błędu (zazwyczaj \fIh_errno\fP) zwraca odpowiadający mu komunikat błędu. .PP .\" Zapytania o nazwy domenowe z \fBgethostbyname\fP() i \fBgethostbyaddr\fP() polegają na skonfigurowanych źródłach Name Service Switch (\fBnsswitch.conf\fP(5)) lub lokalnym serwerze nazw (\fBnamed\fP(8)). Domyślną\ akcją\ jest odpytanie skonfigurowanych źródeł Name Service Switch (\fBnsswitch.conf(5))\fP, a jeśli się\ to nie powiedzie, lokalnego serwera nazw (\fBnamed\fP(8)). .SS Historia Plik \fBnsswitch.conf\fP(5) jest współczesnym sposobem kontrolowania kolejności wyszukiwań komputerów. .PP W glibc 2.4 i wcześniejszych, do określenia kolejności wyszukiwań komputerów służyło słowo kluczowe \fIorder\fP zdefiniowane w \fI/etc/host.conf\fP (\fBhost.conf\fP(5)). .PP .PP Struktura \fIhostent\fP zdefiniowana w \fI\fP następująco: .PP .in +4n .EX 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 */ .EE .in .PP Struktra \fIhostent\fP składa się z: .TP \fIh_name\fP Oficjalna nazwa komputera. .TP \fIh_aliases\fP Zakończona wskaźnikiem null tablica alternatywnych nazw komputera. .TP \fIh_addrtype\fP Typ adresu; obecnie zawsze jest to \fBAF_INET\fP lub \fBAF_INET6\fP. .TP \fIh_length\fP Długość adresu w bajtach. .TP \fIh_addr_list\fP Zakończona wskaźnikiem null tablica adresów sieciowych komputera (w sieciowym porządku bajtów). .TP \fIh_addr\fP Pierwszy adres z \fIh_addr_list\fP \- dla zachowania zgodności ze wcześniejszymi wersjami .SH "WARTOŚĆ ZWRACANA" Funkcje \fBgethostbyname\fP() i \fBgethostbyaddr\fP() zwracają strukturę \fIhostent\fP lub wskaźnik null w przypadku błędu. W razie błędu, zmienna \fIh_errno\fP przechowuje numer błędu. Wartość zwrócona, jeśli jest różna od null, może wskazywać na statyczne dane, patrz UWAGI poniżej. .SH BŁĘDY Zmienna \fIh_errno\fP może przyjmować następujące wartości: .TP \fBHOST_NOT_FOUND\fP Podany komputer jest nieznany. .TP \fBNO_DATA\fP Żą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 \fBNO_ADDRESS\fP jest synonimem \fBNO_DATA\fP. .TP \fBNO_RECOVERY\fP Wystąpił trwały błąd serwera nazw. .TP \fBTRY_AGAIN\fP Autorytatywny serwer nazw zwrócił tymczasowy błąd. Proszę spróbować ponownie później. .SH PLIKI .TP \fI/etc/host.conf\fP plik konfiguracyjny biblioteki resolver .TP \fI/etc/hosts\fP plik bazy danych komputerów .TP \fI/etc/nsswitch.conf\fP plik konfiguracyjny serwisów nazw (NSS) .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbw18 lb lbw29 l l l. Interfejs Atrybut Wartość T{ \fBgethostbyname\fP() T} Bezpieczeństwo wątkowe T{ MT\-Unsafe race:hostbyname env .br locale T} T{ \fBgethostbyaddr\fP() T} Bezpieczeństwo wątkowe T{ MT\-Unsafe race:hostbyaddr env .br locale T} T{ \fBsethostent\fP(), .br \fBendhostent\fP(), .br \fBgethostent_r\fP() T} Bezpieczeństwo wątkowe T{ MT\-Unsafe race:hostent env .br locale T} T{ \fBherror\fP(), .br \fBhstrerror\fP() T} Bezpieczeństwo wątkowe MT\-Safe T{ \fBgethostent\fP() T} Bezpieczeństwo wątkowe T{ MT\-Unsafe race:hostent .br race:hostentbuf env locale T} T{ \fBgethostbyname2\fP() T} Bezpieczeństwo wątkowe T{ MT\-Unsafe race:hostbyname2 .br env locale T} T{ \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP(), \fBgethostbyname2_r\fP() T} Bezpieczeństwo wątkowe MT\-Safe env locale .TE .sp 1 W powyższej tabeli, \fIhostent\fP w \fIrace:hostent\fP oznacza, że jeśli któraś z funkcji \fBsethostent\fP(), \fBgethostent\fP(), \fBgethostent_r\fP() lub \fBendhostent\fP() jest używana równolegle w różnych wątkach programu, może nastąpić sytuacja wyścigu danych. .SH "ZGODNE Z" POSIX.1\-2001 definiuje \fBgethostbyname\fP(), \fBgethostbyaddr\fP(), \fBsethostent\fP(), \fBendhostent\fP(), \fBgethostent\fP() i \fIh_errno\fP; \fBgethostbyname\fP(), \fBgethostbyaddr\fP() i \fIh_errno\fP są oznaczone jako starzejące się. POSIX.1\-2008 usuwa definicje \fBgethostbyname\fP(), \fBgethostbyaddr\fP() oraz \fIh_errno\fP, zalecając używanie zamiast nich funkcji\fBgetaddrinfo\fP(3) i \fBgetnameinfo\fP(3). .SH UWAGI Funkcje \fBgethostbyname\fP() i \fBgethostbyaddr\fP() mogą zwracać wskaźniki do danych statycznych, które mogą być nadpisane przez kolejne wywołania. Kopiowanie \fIstruct hostent\fP nie wystarcza, ponieważ zawiera ona wskaźniki \- wymagane jest skopiowanie wszystkiego. .PP W oryginalnej implementacji BSD, argument \fIlen\fP funkcji \fBgethostbyname\fP() był typu \fIint\fP. Standard SUS\-v2 jest błędny i określa parametr \fIlen\fP funkcji \fBgethostbyaddr\fP() jako będący typu \fIsize_t\fP. (Nie jest to właściwe, ponieważ musi to być typ \fIint\fP, którym \fIsize_t\fP nie jest. POSIX.1\-2001 używa \fIsocklen_t\fP, co jest OK). Patrz także \fBaccept\fP(2). .PP Prototyp BSD funkcji \fBgethostbyaddr\fP() używa \fIconst char\ *\fP dla trzeciego argumentu. .SS "Rozszerzenie System V/POSIX" .\" e.g., Linux, FreeBSD, UnixWare, HP-UX .\" e.g., FreeBSD, AIX POSIX wymaga, aby wywołanie \fBgethostent\fP() 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 \fI/etc/hosts\fP. 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ę \fBgethostent_r\fP(). .SS "Rozszerzenia GNU" Glibc2 ma także funkcję \fBgethostbyname2\fP(), która działa jak \fBgethostbyname\fP(), ale pozwala określić rodzinę adresów, do której musi należeć zadany adres. .PP Glibc2 ma także wielowątkowe wersje \fBgethostent_r\fP(), \fBgethostbyaddr_r\fP(), \fBgethostbyname_r\fP() i \fBgethostbyname2_r\fP(). Proces wywołujący przekazuje strukturę \fIhostent\fP w \fIret\fP, który będzie wypełniony, gdy funkcja zakończy się pomyślnie, oraz tymczasowy bufor roboczy \fIbuf\fP o rozmiarze \fIbuflen\fP. Po pomyślnym wywołaniu, \fIresult\fP będzie wskazywał na wynik. W razie błędu lub gdy nie znaleziono żadnego wpisu \fIresult\fP 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 \fBRANGE\fP, jeśli \fIbuf\fP jest za mały \- w takim wypadku należy powtórzyć wywołanie funkcji z większym buforem. Globalna zmienna \fIh_errno\fP nie jest modyfikowana, ale numer błędu jest przekazywany w zmiennej, której adres został podany w \fIh_errnop\fP. .SH BŁĘDY .\" http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482973 \fBgethostbyname\fP() nie rozpoznaje komponentów oddzielonego kropkami łańcucha adresu IPv4, jeśli są one wyrażone jako liczby szesnastkowe. .SH "ZOBACZ TAKŻE" .\" .BR getipnodebyaddr (3), .\" .BR getipnodebyname (3), .\" .BR resolv+ (8) \fBgetaddrinfo\fP(3), \fBgetnameinfo\fP(3), \fBinet\fP(3), \fBinet_ntop\fP(3), \fBinet_pton\fP(3), \fBresolver\fP(3), \fBhosts\fP(5), \fBnsswitch.conf\fP(5), \fBhostname\fP(7), \fBnamed\fP(8) .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 5.04 projektu Linux \fIman\-pages\fP. 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/. .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Robert Luberda i Michał Kułach . Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres .MT manpages-pl-list@lists.sourceforge.net .ME .