Вопрос о функции getaddrinfo () в программировании сокетов - PullRequest
2 голосов
/ 14 февраля 2011

Ниже приведен пример вызова getaddrinfo ()

status = getaddrinfo("www.example.net","1234", &hints, &server_info);

. После этого server_info будет указывать на связанный список со всеми видами адресной информации.

У меня есть следующие вопросы:

Поскольку я четко указал имя хоста и номер порта, единственная информация об адресах, о которой я могу думать, это адреса IPv4 и IPv6.Итак, длина связанного списка должна быть 2. Есть ли какая-либо другая информация об адресе, кроме них?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 февраля 2011

Имя может содержать более одного IPv4 или IPv6-адреса. Нельзя сказать, что будет возвращен, например, только один IPv4-адрес (попробуйте его с "www.google.com" Например, вы, вероятно, получите более одного адреса IPv4).

Но в любом случае я думаю, что основная предпосылка вашего вопроса неверна. Даже если не было возможности вернуть более одного IPv4 и одного адреса IPv6 сегодня , функция документирована так, чтобы возвращать произвольно длинный список addrinfo объектов. Поэтому, даже если ваш код работал сегодня в любой ситуации, нет никакой гарантии, что он продолжит работать завтра. Если задокументирована функция для возврата произвольно длинного связного списка, вам нужно уметь это обрабатывать.

0 голосов
/ 17 февраля 2011

Вы хотите отключить физическую конфигурацию машин с именами в уме. DNS просто сопоставляет имя с набором адресов. У многих хостов будет только один интерфейс. Многие хосты будут иметь несколько (так называемый multi-homing). DNS не заботится о конфигурации компьютера или компьютеров, адресам которых он сопоставляет имя. В качестве простых примеров часто сервер будет иметь интерфейсы в нескольких сетях с разными адресами, которые будут отображаться на одно и то же имя. Иногда при свертывании сервисов с разных машин на одно и то же имя сопоставляется один и тот же адрес. Поэтому не предполагайте, что между именами и машинами существует какое-либо отображение 1: 1, а также интерфейсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...