.\" Translation: Robert Luberda , Oct 2003, manpages 1.60 .\" $Id: gethostbyname.3,v 1.4 2004/10/09 14:51:29 robert Exp $ .\" .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" .\" 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. .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sat May 22 18:43:54 1993, David Metcalfe .\" Modified Sun Jul 25 10:42:30 1993, Rik Faith (faith@cs.unc.edu) .\" Modified Sun Feb 16 13:23:10 1997, Andries Brouwer (aeb@cwi.nl) .\" Modified Mon Dec 21 14:49:33 1998, Andries Brouwer (aeb@cwi.nl) .\" Modified Sat Aug 12 18:11:32 2000, Andries Brouwer (aeb@cwi.nl) .\" Modified Sat May 19 23:37:50 2001, Andries Brouwer (aeb@cwi.nl) .\" .TH GETHOSTBYNAME 3 2000-08-12 "BSD" "Podręcznik programisty Linuksa" .SH NAZWA gethostbyname, gethostbyaddr, sethostent, endhostent, herror, hstrerror \- zwróć wpis sieciowy komputera .SH SKŁADNIA .nf .B #include .B extern int h_errno; .sp .BI "struct hostent *gethostbyname(const char *" nazwa ); .sp .B #include " " /* dla AF_INET */ .BI "struct hostent *gethostbyaddr(const char *" adres , .BI " int " dlug ", int " typ ); .sp .BI "void sethostent(int " stayopen ); .sp .B void endhostent(void); .sp .BI "void herror(const char *" s ); .sp .BI "const char *hstrerror(int " err ); .sp 2 /* rozszerzenia GNU */ .br .BI "struct hostent *gethostbyname2(const char *" nazwa ", int " af ); .sp .BI "int gethostbyname_r (const char *" nazwa , .BI " struct hostent *" ret ", char *" buf ", size_t " buflen , .BI " struct hostent **" result ", int *" h_errnop ); .sp .BI "int gethostbyname2_r (const char *" nazwa ", int " af, .BI " struct hostent *" ret ", char *" buf ", size_t " buflen , .BI " struct hostent **" result ", int *" h_errnop ); .fi .SH OPIS \fI Uwaga! To tłumaczenie może być nieaktualne!\fP .PP Funkcja \fBgethostbyname()\fP dla danego komputera \fInazwa\fP zwraca strukturę typu \fIhostent\fP. \fINazwa\fP jest tutaj albo nazwą komputera, albo adresem IPv4 w standardowej notacji z kropkami, albo adresem IPv6 w notacji ze średnikami (i być może kropkami). (Proszę przeczytać RFC 1984, aby uzyskać opis adresów IPv6). Jeżeli .I nazwa jest adresem Ipv4 lub IPv6, to .BR gethostbyname () nie wykonuje żadnych sprawdzeń i po prostu kopiuje .I nazwę do pola .I h_name oraz jej odpowiednik .I struct in_addr do pola .I h_addr_list[0] zwracanej struktury .IR hostent . Jeżeli \fInazwa\fP nie kończy się kropką oraz ustawiono zmienną środowiskową \fBHOSTALIASES\fP, to wyszukiwanie \fInazwy\fP zacznie się od pliku z aliasami, wskazywanego przez \fBHOSTALIASES\fP. (format tego pliku opisany jest w .BR hostname (7)). Bieżąca domenta i jej domeny nadrzędne są przeszukiwane, chyba że \fInazwa\fP kończy się kropką. .PP Funkcja \fBgethostbyaddr()\fP zwraca strukturę typu \fIhostent\fP dla zadanego adresu \fIadres\fP o długości \fIdlug\fP i typie adresu \fItyp\fP. Obecnie jedynym poprawnym typem adresu jest .BR AF_INET . .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 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 Funkcje \fBgethostbyname()\fP i \fBgethostbyaddr()\fP używają do odpytywania serwera kombinacji któregokolwiek bądź wszystkich serwerów nazw \fBnamed\fP(8), wydzielonych linii z \fI/etc/hosts\fP, oraz Systemu Informacji Sieciowej (Network Information Service \- NIS lub YP), w zależności od zawartości linii \fIorder\fP w pliku \fI/etc/host.conf\fP. (Proszę przeczytać .BR resolv+ (8)). Domyślnie najpierw odpytywane są serwery \fBnamed\fP(8), a następnie przeglądany jest \fI/etc/hosts\fP. .PP Struktura \fIhostent\fP zdefiniowana w \fI\fP następująco: .sp .RS .nf .ne 7 .ta 8n 16n 32n 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 */ .ta .fi .RE .PP Struktra \fIhostent\fP składa się z: .TP .I h_name Oficjalna nazwa komputera. .TP .I h_aliases Zakończona zerem tablica alternatywnych nazw komputera. .TP .I h_addrtype Typ adresu; obecnie zawsze jest to .BR AF_INET . .TP .I h_length Długość adresu w bajtach. .TP .I h_addr_list Zakończona zerem tablica adresów sieciowych komputera w sieciowym porządku bajtów (network byte order). .TP .I h_addr 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. .SH BŁĘDY Zmienna \fIh_errno\fP może przyjmować następujące wartości: .TP .B HOST_NOT_FOUND Podany komputer jest nieznany. .TP .BR NO_ADDRESS " lub " NO_DATA Żądana nazwa jest poprawna, ale nie ma adresu IP. .TP .B NO_RECOVERY Wystąpił trwały błąd serwera nazw. .TP .B TRY_AGAIN Autorytatywny serwer nazw zwrócił tymczasowy błąd. Proszę spróbować ponownie później. .SH PLIKI .TP .I /etc/host.conf plik konfiguracyjny resolver configuration file .TP .I /etc/hosts plik bazy danych komputerów .SH "ZGODNE Z" BSD 4.3. .SH UWAGI Standard SUS-v2 jest błędny i określa parametr .I len funkcji .B gethostbyaddr() jako mający typ .IR size_t . (No nie jest właściwe, ponieważ musi to być typ .IR int , którym .I size_t nie jest. POSIX 1003.1-2001 używa .IR socklen_t , co jest OK) .LP Funkcje .BR gethostbyname () i .BR gethostbyaddr () mogą zwracać wskaźniki do danych statycznych, które mogą być nadpisane przez kolejne wywołania. Kopiowanie .I struct hostent nie wystarcza, ponieważ zawiera ona wskaźniki - wymagane jest skopiowanie wszystkiego.\" FIXME deep copy .LP Glibc2 ma także funkcję .BR gethostbyname2() , która działa jak .BR gethostbyname() , ale pozwala określić rodzinę adresów, do której musi należeć zadany adres. .LP Glibc2 ma także wielowątkowe wersje .B gethostbyname_r() i .BR gethostbyname2_r() . Zwracają one 0 w przypadku powodzenia i niezero w razie błędu. Wynik funkcji jest przechowywany w strukturze o adresie .IR ret . Po wywołaniu funkcji .RI * result będzie NULL w razie błędu albo wskaźnikiem do wyniku, gdy funkcja zakończy się powodzeniem. Pomocnicze dane są przechowywane w buforze .I buf o długości .IR buflen . (Jeżeli bufor jest za mały, to funkcje te zwrócą .BR ERANGE .) Globalna zmienna .I h_errno nie jest modyfikowana, ale numer błędu jest przekazywany w zmiennej, której adres został podany w .IR h_errnop . .PP POSIX 1003.1-2001 traktuje .B gethostbyaddr() i .B gethostbyname() jako spuściznę i wprowadza .sp .nf .BI "struct hostent *getipnodebyaddr (const void *restrict " addr , .BI " socklen_t " len ", int " type ", int *restrict " error_num ); .sp .BI "struct hostent *getipnodebyname (const char *" name , .BI " int " type ", int " flags ", int *" error_num ); .SH "ZOBACZ TAKŻE" .BR resolver (3), .BR hosts (5), .BR hostname (7), .BR resolv+ (8), .BR named (8) .SH "INFORMACJE O TŁUMACZENIU" Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i \fImoże nie być aktualne\fR. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia: .IP man \-\-locale=C 3 gethostbyname .PP Prosimy o pomoc w aktualizacji stron man \- więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages\-pl/.