Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
getaddrinfo - tlumaczenie adresow i uslug sieciowych
SK/LADNIA
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int getaddrinfo(const char *node, const char *service,
const struct addrinfo *hints,
struct addrinfo **res);
void freeaddrinfo(struct addrinfo *res);
const char *gai_strerror(int errcode);
OPIS
Funkcja getaddrinfo(3) lczy w pojedynczym interfejsie funkcjonalno
udostpnian przez funkcje getipnodebyname(3), getipnodebyaddr(3),
getservbyname (3) i getservbyport(3). Przystosowana do wielowtkowoci
funkcja getaddrinfo(3) tworzy jedn lub wicej struktur adresowych
gniazda, ktore mog by wykorzystane przez funkcje systemowe bind(2) i
connect(2) do utworzenia gniazda klienta lub serwera.
Funkcja getaddrinfo(3) nie jest ograniczona do tworzenia struktur
adresowych gniazd IPv4. Gniazda IPv6 mog rownie by tworzone za jej
pomoc, o ile dostpne jest wspomaganie dla IPv6. Te struktury adresowe
gniazd mog by bezporednio wykorzystane przez bind(2) i connect(2) do
sporzdzenia gniazda klienta lub serwera.
Struktura addrinfo uywana przez t funkcj zawiera nastpujce pola:
struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname;
struct addrinfo *ai_next;
};
getaddrinfo(3) ustawia res, aby wskazywalo na dynamicznie zaalokowan
list struktur addrinfo, dowizan do pola ai_next. Istnieje kilka
powodow, dla ktorych lista moe zawiera wicej ni jedn struktur addrinfo,
wlczajc w to: posiadanie przez host wielu interfejsow sieciowych oraz
dostpno tej samej uslugi poprzez wiele protokolow gniazda (na przyklad,
gdy jednym z nich jest SOCK_STREAM, a innym SOCK_DGRAM).
Pola ai_family, ai_socktype i ai_protocol maj to samo znaczenie jako
odpowiednie parametry wywolania systemowego socket(2). Funkcja
getaddrinfo(3) zwraca adresy gniazd IPv4 lub IPv6 (ai_family zostanie
ustawione albo na PF_INET albo na PF_INET6).
Parametr hints okrela preferowany rodzaj gniazda lub protokol. Warto
NULL dla hints okrela, e akceptowany jest dowolny adres sieciowy lub
protokol. Jeli parametr ten ma warto ron od NULL, wskazuje on na
struktur addrinfo, w ktorej pola ai_family, ai_socktype i ai_protocol
okrelaj preferowany rodzaj gniazda. PF_UNSPEC w ai_family okrela
dowoln rodzin protokolow (na przyklad IPv4 lub IPv6). 0 w ai_socktype
lub ai_protocol stwierdza, e akceptowalny jest rownie dowolny rodzaj
gniazda lub protokol. Pole ai_flags zawiera dodatkowe, zdefiniowane
poniej, opcje. Wiele znacznikow podaje si jako ich logiczne OR.
Wszystkie pozostale pola parametru hints musz zawiera albo 0 albo
wskanik NULL.
Parametry node i service mog by rowne NULL, ale nie oba naraz. node
zawiera albo adres sieciowy w postaci numerycznej (w formacie
dziesitnych liczb rozdzielonych kropkami dla IPv4, a w formacie
szesnastkowym dla IPv6) albo nazw hosta, dla ktorej adresy sieciowe bd
poszukiwane i rozwizane. Jeli pole ai_flags parametru hints zawiera
znacznik AI_NUMERICHOST, to parametr node musi by adresem sieciowym w
postaci numerycznej. Znacznik AI_NUMERICHOST eliminuje jakiekolwiek,
potencjalnie dlugotrwale, poszukiwania adresu sieciowego hosta.
Funkcja getaddrinfo(3) tworzy list struktur addrinfo, po jednej dla
kadej podstawy ograniczenia adresow sieciowych narzuconej przez
parametr hints. Gdy ai_flags w hints zawiera znacznik AI_CANONNAME, to
ai_canonname jest ustawiane tak, aby wskazywalo na oficjaln nazw hosta.
ai_family, ai_socktype i ai_protocol zawieraj parametry tworzenia
gniazda. Wskanik do adresu gniazda jest umieszczany w polu ai_addr, a
dlugo adresu gniazda w bajtach jest umieszczana w polu ai_addrlen.
Gdy node jest rowne NULL, inicjalizacja adresu sieciowego w kadej ze
struktur gniazda zaley od znacznika AI_PASSIVE, ktory jest ustawiany w
polu ai_flags parametru hints. Gdy znacznik AI_PASSIVE jest ustawiony,
to adres sieciowy w kadej ze struktur gniazda pozostanie nieokrelony.
Jest to wykorzystywane przez programy serwerow, ktore zamierzaj
przyjmowa polczenia od klientow na dowolny adres sieciowy. Gdy
znacznik AI_PASSIVE nie jest ustawiony, to adres sieciowy zostanie
ustawiony na adres interfejsu loopback. Jest to wykorzystywane przez
programy klienckie, ktore zamierzaj polczy si z serwerem dzialajcym na
tym samym hocie.
service ustawia numer portu w adresie sieciowym kadej ze struktur
gniazda. Jeli service jest rone od NULL, to numer portu pozostanie
niezainicjalizowany.
Funkcja freeaddrinfo(3) zwalnia pami przydzielon dla dynamicznie
zaalokowanej listy res.
WARTO ZWRACANA
getaddrinfo(3) zwraca 0, gdy zakoczy si pomylnie, a w przeciwnym razie
jeden z nastpujcych niezerowych kodow bldow:
EAI_FAMILY
Zupelny brak wsparcia dla danej rodziny adresow.
EAI_SOCKTYPE
Zupelny brak wsparcia dla danego rodzaju gniazda.
EAI_BADFLAGS
ai_flags zawiera nieprawidlowe znaczniki.
EAI_NONAME
node lub service jes nieznane. Ten bld jest rownie zwracany,
gdy zarowno node, jak i service s rowne NULL.
EAI_SERVICE
dana usluga nie jest dostpna dla zadanego rodzaju gniazda. Moe
ona jednak by dostpna dla innego rodzaju gniazda.
EAI_ADDRFAMILY
Podany host nie posiada adnego adresu sieciowego dla zadanej
rodziny adresow.
EAI_NODATA
Podany host istnieje, ale nie zdefiniowano dla niego adnego
adresu sieciowego.
EAI_MEMORY
Brak pamici.
EAI_FAIL
Serwer nazw zwrocil bld trwaly.
EAI_AGAIN
Serwer nazw zwrocil bld tymczasowy. Naley sprobowa poniej.
EAI_SYSTEM
Inny bld systemowy; szczegolowe informacje zawarte s w errno.
Funkcja gai_strerror(3) tlumaczy te kody bldow na czytelny dla
czlowieka napis, odpowiedni dla zglaszania bldow.
ZOBACZ TAKE
getipnodebyname(3), getipnodebyaddr(3)
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.