Provided by:
manpages-pl-dev_20060617-3_all 
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.