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

Я проверил много результатов, но я не знаю, как решить.

0 ответов

Другие вопросы по тегам