"Microsoft DNS Client" против getaddrinfo?
В настоящее время мое приложение использует библиотеку асинхронного DNS-преобразователя c-ares в Windows ниже cURL, и у меня есть пользователи, жалующиеся на то, что она ведет себя не так, как другие приложения Windows. Один конкретный пользователь сказал, что "другие приложения используют Microsoft DNS-клиент" и не испытывает никаких проблем.
Сама cURL имеет асинхронную реализацию DNS, которая использует getaddrinfo() в потоке. Я предполагаю, что это будет эквивалентно поведению "DNS-клиента" и его множества функций (например, DnsQuery?)
Итак, дорогая Lazyweb, я спрашиваю, есть ли ощутимая разница между поведением getaddrinfo() и использованием реальных API-интерфейсов Dns * из Win32 API.
2 ответа
Глядя на источники, кажется, что на самом деле они реализуют протокол DNS для запроса имен хостов (и напрямую не вызывает getaddrinfo) - я ожидал бы, что упущу такие вещи, как поиск WINS, и бог знает, что могут делать другие окна Windows. сделать, чтобы искать имена.
Самым простым способом выполнения DNS-запросов в Windows является использование DNSQuery (и производных функций, utf8, wbytes, ansi). Если вам не нужно асинхронное разрешение, в этом случае я бы рекомендовал продолжать использовать c-ares или другие подобные API.
Я не уверен, что WINS или другие специфичные для Windows разрешения (не являющиеся частью спецификаций DNS) не покрываются c-ares. Было бы полезно, если бы вы могли привести нам несколько примеров, может быть, мы сможем реализовать их также в c-ares.