table of contents
- bookworm 4.18.1-1
 - bookworm-backports 4.27.0-1~bpo12+1
 - testing 4.27.0-1
 - unstable 4.27.0-1
 
| getipnodebyname(3) | Library Functions Manual | getipnodebyname(3) | 
НАИМЕНОВАНИЕ¶
getipnodebyname, getipnodebyaddr, freehostent - возвращают сетевые имена и адреса машины
БИБЛИОТЕКА¶
Стандартная библиотека языка C (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.
 
В аргументе flags указываются дополнительные параметры. Возможно указать более одного параметра с помощью логического сложения (OR). Если параметры не требуются, то значение flags должно быть равно нулю.
- 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 указывается одно из следующих значений:
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При ошибке возвращается NULL, а в error_num будет содержаться код ошибки из следующего списка:
- HOST_NOT_FOUND
 - Имя узла или сетевой адрес не найдены.
 - NO_ADDRESS
 - Сервер доменных имён распознал сетевой адрес или имя, но не ответил. Это может произойти, если сетевой узел имеет только адреса IPv4, а запрашивалась информация об IPv6, или наоборот.
 - NO_RECOVERY
 - Сервер доменных имён возвратил сообщение о постоянной ошибке.
 - TRY_AGAIN
 - Сервер доменных имён возвратил сообщение о временной ошибке. Возможно, ответ может быть получен при повторной попытке.
 
При выполненном запросе возвращается указатель на структуру hostent, содержащую следующие поля:
- 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-подобные системы поддерживают их, но все эти вызовы устарели.
СМОТРИТЕ ТАКЖЕ¶
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
| 10 ноября 2022 г. | Справочные страницы Linux 6.03 |