The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

getipnodebyaddr (3)
  • getipnodebyaddr (3) ( FreeBSD man: Библиотечные вызовы )
  • >> getipnodebyaddr (3) ( Русские man: Библиотечные вызовы )
  • getipnodebyaddr (3) ( Linux man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

    getipnodebyname, getipnodebyaddr, freehostent - получают сетевые имена и адреса машины  

    СИНТАКСИС

    #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);
    
     

    ОПИСАНИЕ

    Эти функции устарели. Используйте вместо них функции getaddrinfo(3) и getnameinfo(3).

    Функции getipnodebyname(3) и getipnodebyaddr(3) возвращают имена и адреса машины в сети. Эти функции возвращают указатель на следующую структуру:

    struct  hostent {
            char    *h_name;
            char    **h_aliases;
            int     h_addrtype;
            int     h_length;
            char    **h_addr_list;
    };
    

    Эти функции заменяют друг на друга функции gethostbyname(3) и gethostbyaddr(3), которые могут осуществлять доступ только к семейству адресов IPv4. Функции getipnodebyname(3) и getipnodebyaddr(3) могут осуществлять доступ к нескольким семействам сетевых адресов.

    В отличие от функций gethostby эти функции возвращают указатели на динамически выделяемую память. Функция freehostent(3) используется для освобождения динамически выделенной памяти после того, как надобность в структуре hostent отпадет.  

    Параметры getipnodebyname

    Функция getipnodebyname(3) ищет сетевой адрес машины, указанной в параметре 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_ALL
    Этот флаг равен (AI_ADDRCONFIG | AI_V4MAPPED).
     

    Параметры getipnodebyaddr

    Функция getipnodebyaddr(3) ищет имя машины, адрес которой указан в параметре addr. Параметр af указывает на одно из следующих значений:
    AF_INET
    Параметр addr указывает на структуру structin_addr, значение len которой должно быть равно sizeof(structin_addr).
    AF_INET6
    Параметр addr указывает на структуру structin6_addr, значение len которой должно быть равно sizeof(structin6_addr).
     

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    В случае ошибки возвращается "пустой" указатель, при этом error_num будет содержать один из нижеприведенных кодов ошибок:
    HOST_NOT_FOUND
    Имя машины или сетевой адрес не найдены.
    NO_ADDRESS
    Сервер доменных имен распознал сетевой адрес или имя, но не ответил. Это может произойти, если сетевая машина имеет только адрес IPv4, а запрашивалась информация об IPv6, или наоборот.
    NO_RECOVERY
    Сервер доменных имен возвратил сообщение о постоянной ошибке.
    TRY_AGAIN
    Сервер доменных имен возвратил сообщение о временной ошибке (может быть, в следующий раз Вам повезет больше).

    При удачном запросе возвращается указатель на структуру hostent, содержащую следующие поля:

    h_name
    Официальное имя сетевой машины. h_aliases Массив указателей на неофициальные псевдонимы этой же машины. Массив оканчивается "пустым" указателем. h_addrtype Копия параметра af вызовов getipnodebyname(3) и getipnodebyaddr(3). Значение 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
    Массив из одного или нескольких указателей на структуры сетевого адреса для сетевой машины. Массив оканчивается "пустым" указателем.
     

    ЗАМЕЧАНИЯ

    Эти функции существовали в glibc 2.1.91-95, но были снова удалены. Некоторые Unix-подобные системы поддерживают их, но все вызовы их устарели.  

    СООТВЕТСТВИЕ СТАНДАРТАМ

    RFC 2553.  

    СМ. ТАКЖЕ

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


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    Параметры getipnodebyname
    Параметры getipnodebyaddr
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    ЗАМЕЧАНИЯ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру