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/.