Шрифт:
Самая основная функция, выполняющая поиск имени узла, — это функция
Маловероятно, что реализации gethostbyname исчезнут раньше, чем весь Интернет перейдет на протокол IPv6, а произойдет это еще очень не скоро. Однако удаление функции из стандарта POSIX гарантирует, что она не будет использоваться в новых программах. Вместо нее мы рекомендуем использовать getaddrinfo (раздел 11.6).
Непустой указатель, возвращаемый этой функцией, указывает на следующую структуру
В терминах DNS функция
На рис. 11.2 представлено устройство структуры
Рис. 11.2. Структура hostent и ее одержимое
Возвращаемое имя
Некоторые версии функции gethostbyname допускают, что аргумент hostname может быть записан в виде строки десятичных чисел, разделенных точками. То есть вызов в форме hptr = gethostbyname("206.62.226.33"); будет работать. Этот код был добавлен, поскольку клиент Rlogin принимает только имя узла, вызывая функцию gethostbyname, и не принимает точечно-десятичную запись [127]. Стандарт POSIX допускает это, но не устанавливает такое поведение в качестве обязательного, поэтому переносимое приложение не может использовать указанную особенность.
Функция
Ошибка
Самые современные распознаватели предоставляют функцию
Пример
В листинге 11.1 [1] показана простая программа, вызывающая функцию
Листинг 11.1. Вызов функции и вывод возвращаемой информации
1
Все исходные коды программ, опубликованные в этой книге, вы можете найти по адресу http://www.piter.com.