Шрифт:
Вызывающим процессом могут быть установлены значения следующих элементов структуры
Поле
Если аргументом структуры
Если функция завершается успешно (0), то в переменную, на которую указывает аргумент
1. Если существует множество адресов, связанных с узлом
2. Если служба предоставляется для множества типов сокетов, то одна структура может быть возвращена для каждого типа сокета в зависимости от
Например, если структура
одна для первого IP-адреса и типа сокета SOCK_STREAM;
одна для первого IP-адреса и типа сокета SOCK_DGRAM;
одна для второго IP-адреса и типа сокета SOCK_STREAM;
одна для второго IP-адреса и типа сокета SOCK_DGRAM.
Мы показываем схематическое изображение этого примера на рис. 11.3. Не существует никакого гарантированного порядка структур при возвращении множества элементов. Например, мы не можем считать, что службы TCP возвращаются перед службами UDP.
Рис. 11.3. Пример информации, возвращаемой функцией getaddrinfo
Хотя это и не гарантируется, реализация должна возвращать IP-адреса в том же порядке, в котором они возвращаются DNS. Некоторые распознаватели позволяют администратору указывать порядок сортировки адресов в файле /etc/resolv.conf. Протокол IPv6 определяет правила выбора адресов (RFC 3484 [28]), которые могут влиять на порядок адресов, возвращаемых getaddrinfo.
Информация, возвращаемая в структурах