Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       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.

       В аргументе 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 указывается одно из следующих значений:

       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
              Сервер доменных имён возвратил сообщение о временной ошибке. Возможно, ответ  может
              быть получен при повторной попытке.

       При  выполненном запросе возвращается указатель на структуру 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-подобные
       системы поддерживают их, но все эти вызовы устарели.

СМ. ТАКЖЕ

       getaddrinfo(3), getnameinfo(3), inet_ntop(3), inet_pton(3)

ПЕРЕВОД

       Русский   перевод   этой    страницы    руководства    был    сделан    Azamat    Hackimov
       <azamat.hackimov@gmail.com>,    Dmitry   Bolkhovskikh   <d20052005@yandex.ru>,   Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.