ИМЯ
getipnodebyname, getipnodebyaddr, freehostent - возвращают сетевые имена и адреса машиныLIBRARY
Standard C library ( libc, -lc)СИНТАКСИС
#include <sys/types.h> #include <sys/socket.h> #include <netdb.h>
[[deprecated]] struct hostent *getipnodebyname(const char *name, int af, int flags, int *error_num); [[deprecated]] struct hostent *getipnodebyaddr(const void addr[.len], size_t len, int af, int *error_num); [[deprecated]] void freehostent(struct hostent *ip);
ОПИСАНИЕ
Эти функции устарели (и недоступны в glibc). Используйте вместо них функции getaddrinfo(3) и getnameinfo(3). Функции getipnodebyname() и getipnodebyaddr() возвращают имена и адреса машины в сети. Эти функции возвращают указатель на следующую структуру:struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; };
Эти функции заменяют функции gethostbyname(3) и gethostbyaddr(3), которые могут возвращать только сетевые адреса семейства IPv4. Функции getipnodebyname() и getipnodebyaddr() могут осуществлять доступ к нескольким семействам сетевых адресов. В отличие от функций gethostby эти функции возвращают указатели на динамически выделяемую память. Функция freehostent() используется для освобождения динамически выделенной памяти после того, как надобность в структуре hostent отпадёт.
Параметры getipnodebyname()
Функция getipnodebyname() ищет сетевой адрес узла, указанного в параметре name. В параметре af указывается одно из следующих значений:- AF_INET
- Параметр name указывает на адрес IPv4 в точечной нотации или на имя сетевого узла IPv4.
- AF_INET6
- Параметр name указывает на шестнадцатеричный адрес IPv6 или на имя сетевого узла IPv6.
- AI_V4MAPPED
- Этот флаг используется с AF_INET6 для запроса адресов IPv4 вместо адресов IPv6; адрес IPv4 будет отображён в адрес IPv6.
- AI_ALL
- Это флаг используется с AI_V4MAPPED для запроса одновременно адресов IPv4 и IPv6. Любой найденный адрес IPv4 будет отображён в адрес IPv6.
- AI_ADDRCONFIG
- Этот флаг используется с AF_INET6 и указывает, что запросы адресов IPv6 не должны производиться, если система не имеет хотя бы одного адреса IPv6, присвоенного сетевому интерфейсу, а также, что запросы адресов IPv4 не должны производиться, если система не имеет хотя бы одного адреса IPv4, присвоенного сетевому интерфейсу. Флаг может быть использован сам по себе или вместе с флагом AI_V4MAPPED.
- AI_DEFAULT
- Этот флаг эквивалентен (AI_ADDRCONFIG | AI_V4MAPPED).
Параметры getipnodebyaddr()
Функция getipnodebyaddr() ищет имя узла, чей сетевой адрес указан в параметре addr. В параметре af указывается одно из следующих значений:- AF_INET
- Параметр addr указывает на структуру struct in_addr и значение len должно быть равно sizeof(struct in_addr).
- AF_INET6
- Параметр addr указывает на структуру struct in6_addr и значение len должно быть равно sizeof(struct in6_addr).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При ошибке возвращается NULL, а в error_num будет содержаться код ошибки из следующего списка:- HOST_NOT_FOUND
- Имя узла или сетевой адрес не найдены.
- NO_ADDRESS
- Сервер доменных имён распознал сетевой адрес или имя, но не ответил. Это может произойти, если сетевой узел имеет только адреса IPv4, а запрашивалась информация об IPv6, или наоборот.
- NO_RECOVERY
- Сервер доменных имён возвратил сообщение о постоянной ошибке.
- TRY_AGAIN
- Сервер доменных имён возвратил сообщение о временной ошибке. Возможно, ответ может быть получен при повторной попытке.
- h_name
- Официальное имя данного сетевого узла.
- h_aliases
- Массив указателей на неофициальные псевдонимы этого же узла. Массив оканчивается указателем null.
- h_addrtype
- Копия параметра af вызова getipnodebyname() или getipnodebyaddr(). Значение h_addrtype всегда равно AF_INET, если значение af равно AF_INET. Значение h_addrtype всегда равно AF_INET6, если значение af равно AF_INET6.
- h_length
- Это поле равно sizeof(struct in_addr), если h_addrtype равно AF_INET, и sizeof(struct in6_addr), если h_addrtype равно AF_INET6.
- h_addr_list
- Массив из одного или нескольких указателей на структуры сетевого адреса для сетевого узла. Массив оканчивается указателем null.
СТАНДАРТЫ
RFC 2553.ЗАМЕЧАНИЯ
Эти функции существовали в glibc 2.1.91-95, но были удалены. Некоторые UNIX-подобные системы поддерживают их, но все эти вызовы устарели.СМ. ТАКЖЕ
getaddrinfo(3), getnameinfo(3), inet_ntop(3), inet_pton(3)ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <[email protected]>, Dmitry Bolkhovskikh <[email protected]>, Vladislav <[email protected]>, Yuri Kozlov <[email protected]> и Иван Павлов <[email protected]> Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на [email protected]10 ноября 2022 г. | Linux man-pages 6.03 |