Функция POSIX getaddrinfo()
используется для выполнения разрешения DNS, а также разрешения имени службы. Аргумент hints
, переданный getaddrinfo()
, имеет поле флагов, ai_flags
.
Среди возможных значений флага: AI_NUMERICHOST
. Согласно документации , это информирует getaddrinfo()
, что строка имени хоста является IP-адресом. Поскольку имя хоста уже является IP-адресом (в отличие от имени хоста), разрешение DNS не требуется.
У меня проблемы с пониманием цели или варианта использования этого флага. Если у вас уже есть IP-адрес, зачем вам вообще звонить getaddrinfo()
? Единственная возможная цель, которую я мог видеть, - это случай, когда у вас уже есть IP-адрес, но вы просто хотите получить имя службы. Но в этом случае вы могли бы просто позвонить getservbyname()
напрямую, что было бы намного проще.
Единственное, о чем я могу думать, это то, что getaddrinfo()
является вновь входящим, тогда как, очевидно, getservbyname()
не является вновь входящим. Итак, является ли цель флага AI_NUMERICHOST
просто в том, чтобы обеспечить обходной способ сделать потокобезопасным getservbyname()
?
Если нет, то какова цель AI_NUMERICHOST
?