Концептуальный запрос с методом Getaddrinfo

При использовании метода getaddrinfo я предоставляю IP-адрес и номер порта. Я получаю связанный список в переменной out. Это работает нормально. Но у меня есть концептуальное сомнение здесь. Когда я указываю и IP-адрес, и порт, как получается так много возможных сокетов? Разве не должен быть только один?


person Nanda    schedule 22.11.2011    source источник


Ответы (1)


На справочной странице getaddrinfo:

Существует несколько причин, по которым связанный список может иметь более одной структуры addrinfo, в том числе: сетевой хост является многосетевым, доступным по нескольким протоколам (например, как AF_INET, так и AF_INET6); или одна и та же служба доступна из нескольких типов сокетов (например, один адрес SOCK_STREAM и другой адрес SOCK_DGRAM). Обычно приложение должно пытаться использовать адреса в том порядке, в котором они возвращаются. Функция сортировки, используемая в getaddrinfo(), определена в RFC 3484; порядок можно настроить для конкретной системы, отредактировав файл /etc/gai.conf (доступен начиная с glibc 2.5).

person Nialscorva    schedule 22.11.2011
comment
понял. Но возвращаемые структуры несовместимы с sockaddr_storage. Мой вопрос касается этой структуры. - person Nanda; 13.01.2012