Получить запись о сетевом узле по имени
#include <netdb.h>struct hostent * gethostbyname( const char *name );struct hostent * gethostbyname2( const char *name,int af );
libsocket
Процедура gethostbyname() получает запись сетевого хоста для данного имени. Она возвращает указатель на структуру struct hostent, описывающую Интернет-хост. Эта структура содержит либо информацию, полученную от сервера имен, либо отдельные поля из строки в /etc/hosts.
И gethostbyaddr() и gethostbyname() помечены как устаревшие в POSIX 1003.1. Рекомендуется использовать getaddrinfo() или getnameinfo(). |
При использовании сервера имен gethostbyname() ищет данный хост в текущем домене и в родительских доменах, если имя не заканчивается точкой.
|
Можно использовать sethostent(), чтобы потребовать использование подключенного TCP-сокета для запросов. Если флаг stayopen не равен нулю, все запросы к серверу имен будут использовать TCP, и соединение будет сохраняться после каждого вызова gethostbyaddr() или gethostbyname(). Если флаг stayopen равен нулю, запросы будут использовать UDP датаграммы.
Функция gethostbyname2() является улучшенной версией функции gethostbyname() и позволяет искать имена хостов в семействе адресов, отличных от AF_INET
. При указании недопустимого семейства адресов, функция вернет NULL
и установит h_errno в NETDB_INTERNAL
.
Указатель на корректную структуру struct hostent. Если возникла ошибка функция возвращает NULL
, код ошибки записывается в errno.
См. herror().
Для получения информации об этих файлах, обратитесь к Справочнику по Утилитам.
gethostbyname() — POSIX 1003.1 Obsolescent; gethostbyname2() — ЗОСРВ «Нейтрино»
Данная функция использует статическое хранилище данных; если эти данные необходимы для использования в будущем, необходимо скопировать их, прежде чем любые последующие вызовы перезапишут их.
endhostent(), getaddrinfo(), gethostbyaddr(), gethostbyname_r(), gethostent(), getnameinfo(), herror(), struct hostent, sethostent()
/etc/hosts, /etc/nsswitch.conf в Справочнике по Утилитам
Предыдущий раздел: Описание API сетевой библиотеки