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

НАИМЕНОВАНИЕ

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

       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.

       Present in glibc 2.1.91-95, but removed again.  Several UNIX-like systems support them, but all call them
       deprecated.

СМОТРИТЕ ТАКЖЕ

       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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот перевод является свободной программной документацией; он распространяется на условиях  общедоступной
       лицензии  GNU  (GNU  General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите  об  этом
       разработчику(ам)   по   его(их)  адресу(ам)  электронной  почты  или  по  адресу  списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                               getipnodebyname(3)