NAZWA¶
getipnodebyname, getipnodebyaddr, freehostent - określenie nazw i
adresów sieciowych hosta
SKŁADNIA¶
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
struct hostent *getipnodebyname(const char *name,
int af, int flags,
int *error_num);
struct hostent *getipnodebyaddr(const void *addr,
size_t len, int af,
int *error_num);
void freehostent(struct hostent *ip);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
Te funkcje są przestarzałe. Zamiast nich należy
używać
getaddrinfo(3) i
getnameinfo(3).
Funkcje
getipnodebyname(3) i
getipnodebyaddr(3) zwracają
nazwy i adresy hosta sieciowego. Wynik jest wskaźnikiem do struktury o
następującej postaci:
struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
Funkcje te zastąpiły funkcje
gethostbyname(3) i
gethostbyaddr(3), które mogły udostępniać
jedynie adresy należące do rodziny adresów sieciowych
IPv4. Funkcje
getipnodebyname(3) i
getipnodebyaddr(3)
mogą udostępniać adresy należące do wielu
rodzin adresów sieciowych.
W odróżnieniu od funkcji
gethostby, funkcje te
zwracają wskaźniki do pamięci przydzielonej dynamicznie.
Funkcja
freehostent(3) służy do zwalniania przydzielonej
dynamicznie pamięci, gdy wywołujący już nie
potrzebuje struktury
hostent.
parametry getipnodebyname¶
Funkcja
getipnodebyname(3) wyszukuje adresy sieciowe hosta podanego w
parametrze
name. Parametr
af może zawierać
jedną z następujących wartości:
- AF_INET
- Parametr name wskazuje na adres IPv4 (w postaci czterech
rozdzielonych kropkami liczb) lub na nazwę hosta sieci IPv4.
- AF_INET6
- Parametr name wskazuje na adres IPv6 (w postaci szesnastkowej) lub
na nazwę hosta sieci IPv6.
Parametr
flags zawiera dodatkowe opcje. Można podać
więcej niż jedną opcję poprzez wykonanie na nich
logicznego OR.
flags powinno być ustawione na 0, gdy
żadne opcje nie są potrzebne.
- AI_V4MAPPED
- Ten znacznik użyty łącznie z AF_INET6
określa, że zapytanie ma dotyczyć adresów
IPv4, a nie IPv6; adresy IPv4 będą odwzorowane na adresy
IPv6.
- AI_ALL
- Ten znacznik użyty łącznie z AI_V4MAPPED
określa, że zapytanie ma dotyczyć zarówno
adresów IPv4, jak i IPv6. Znalezione adresy IPv4 zostaną
odwzorowane na adresy IPv6.
- AI_ADDRCONFIG
- Ten znacznik użyty łącznie z AF_INET6 oznacza,
że dalsze zapytania dotyczące adresów IPv6 nie
powinny być wykonywane, jeżeli system nie posiada adresu
IPv6 przydzielonego do któregoś z interfejsów
sieciowych oraz, że dalsze zapytania dotyczące
adresów IPv4 nie powinny być wykonywane, jeżeli
system nie posiada adresu IPv4 przydzielonego do któregoś z
interfejsów sieciowych. Znacznik ten może zostać
użyty samodzielnie lub łącznie ze znacznikiem
AI_V4MAPPED.
- AI_ALL
- Ten znacznik jest równoważny (AI_ADDRCONFIG |
AI_V4MAPPED).
parametry getipnodebyaddr¶
Funkcja
getipnodebyaddr(3) poszukuje nazwy hista, którego adres
sieciowy jest podany w parametrze
addr. Parametr
af może
mieć jedną z następujących wartości:
- AF_INET
- Parametr addr wskazuje na strukturę struct in_addr;
len musi mieć wówczas wartość
sizeof(struct in_addr).
- AF_INET6
- Parametr addr wskazuje na strukturę struct in6_addr;
len musi mieć wówczas wartość
sizeof(struct in6_addr).
WARTOŚĆ ZWRACANA¶
Gdy wystąpi błąd, zwrócony zostanie wskaźnik
NULL a
error_num będzie zawierać kod błędu
według następującej listy:
- HOST_NOT_FOUND
- Nie znaleziono nazwy lub adresu sieciowego hosta.
- NO_ADDRESS
- Serwer DNS rozpoznał adres sieciowy lub nazwę hosta, ale nie
zwrócił odpowiedzi. Może się to
zdarzyć, gdy host posiada jedynie adresy IPv4, a zapytanie
dotyczyło jedynie informacji o IPv6, lub odwrotnie.
- NO_RECOVERY
- Serwer DNS zwrócił błąd trwały.
- TRY_AGAIN
- Serwer DNS zwrócił błąd tymczasowy.
Może następnym razem bedzie więcej
szczęścia.
W przypadku pomyślnego wyniku zapytania zwraca ny jest wskaźnik do
struktury
hostent zawierającej następujące pola:
- h_name
- Oficjalna nazwa tego hosta.
- h_aliases
- Tablica wskaźników do nieoficjalnych aliasów tego
samego hosta. Tablica jest zakończona wskaźnikiem NULL.
- h_addrtype
- Kopia parametru af funkcji getipnodebyname(3) lub
getipnodebyaddr(3). h_addrtype będzie równe
AF_INET, gdy parametr af był równy
AF_INET. h_addrtype będzie równe
AF_INET6, gdy parametr af był równy
AF_INET6.
- h_length
- Będzie równe sizeof(struct in_addr), gdy
h_addrtype jest równe AF_INET a sizeof(struct
in6_addr), gdy h_addrtype jest równe AF_INET6.
- h_addr_list
- Tablica zawierająca jeden lub więcej
wskaźników do struktur adresów sieciowych danego
hosta. Tablica jest zakończona wskaźnikiem NULL.
UWAGI¶
Funkcje te były obecne w glibc 2.1.91-95, ale zostały ponownie
usunięte. Wspierają je niektóre systemy uniksopodobne,
lecz wszystkie traktują te funkcje jako niezalecane.
ZGODNE Z¶
RFC 2553.
ZOBACZ TAKŻE¶
getaddrinfo(3),
getnameinfo(3),
inet_ntop(3),
inet_pton(3)
Powyższe tłumaczenie pochodzi z nieistniejącego już
Projektu Tłumaczenia Manuali i
może nie być
aktualne. 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:
- man --locale=C 3 getipnodebyname
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.