C++ - getaddrinfo() - 使用动态 dns 获取自己的外部 IP 失败

C++ - getaddrinfo() - getting own external IP with dynamic dns fails

我目前正在开发一个程序,它可以告诉我我的外部 IP 等信息。为此,我使用函数 getaddrinfo().
出于测试目的,我将 google.com 作为节点名称传递,它工作正常。
如果我将我的动态 dns 传递给该函数,我会收到 0.0.0.0 作为 IP,但我期待我自己的外部 IP。我也尝试了一个朋友的动态 dns,结果相同。
据我可以从 google.com 获取 IP,问题应该不是我的代码。
无法使用 getaddrinfo() 从动态 dns 接收 IP 还是我做错了什么?

编辑:

WSADATA wsaD {};
addrinfo hints = {AI_NON_AUTHORITATIVE, AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, NULL, NULL, NULL};
addrinfo *infoAddress;
WSAStartup(MAKEWORD(2, 2), &wsaD);
getaddrinfo("daniel-nas.computer", "80", &hints, &infoAddress);
struct sockaddr_in *ipAddress = reinterpret_cast<sockaddr_in*>&infoAddress->ai_addr);
inet_ntop(AF_INET, &ipAddress->sin_addr.s_addr, IP, sizeof(IP));
WSACleanup();

IP 是全局定义的:char IP[INET_ADDRSTRLEN];
还有其他人解决过这个问题吗?

[解决方法]
作为一种解决方案,我正在使用函数 gethostbyname()。尽管如此,我对它并不是很满意,因为该功能已被弃用,但我现在可以获得我的 IP。因此我认为,问题要么是我的代码,尽管我可以解析其他主机名,要么是函数 getaddrinfo() 和 DDNS 的组合。