linux,сбой функции getnameinfo: временный сбой в разрешении имени
Я хочу получить IP-адрес через DNS на основе доменного имени или IP-адреса. Но теперь некоторые IP-адреса не работают в Linux, например, 156.59.91.42. Но под Mac проблем нет.
версия для Linux: 4.15.0-151-generic #157-Ubuntu SMP Пт, 9 июля, 23:07:57 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Вот мой код
addrinfo hints{};
addrinfo *address_info{nullptr};
bzero(&hints, sizeof(hints));
hints.ai_flags = AI_CANONNAME;
hints.ai_family = AF_INET;
hints.ai_protocol = IPPROTO_TCP;
std::string host_name = "156.59.91.42";
auto getaddrinfo_result = getaddrinfo(host_name.c_str(), nullptr, &hints, &address_info);
if (getaddrinfo_result != 0) {
std::cout << "getaddrinfo failed " << host_name << ": " << gai_strerror(getaddrinfo_result);
return false;
}
char ip_present[NI_MAXHOST];
auto getnameinfo_result = getnameinfo(address_info->ai_addr, address_info->ai_addrlen, ip_present, NI_MAXHOST,
nullptr, 0, 0);
if (getnameinfo_result != 0) {
std::cout << "getnameinfo failed: " << gai_strerror(getnameinfo_result) << std::endl;
return false;
}
Вот результаты теста。
getnameinfo failed: Temporary failure in name resolution
GetPresentAddressByDNS 156.59.91.42 failed
Я проверил много результатов, но я не знаю, как решить.