getaddrinfo () — сбой при получении собственного внешнего IP с динамическим днс

В настоящее время я работаю над программой, которая сообщает мне, помимо прочего, мой внешний IP. Чтобы добиться этого, я использую функцию getaddrinfo(),
Для целей тестирования я прошел google.com как имя узла, он работал нормально.
Если я передаю свой динамический днс в функцию, я получаю 0.0.0.0 как IP, но я ожидаю свой собственный внешний IP. Я также попробовал динамический DNS от друга с тем же результатом.
Насколько я могу получить IP от google.comпроблема не должна быть в моем коде.
Разве не возможно получить IP с динамического днс с getaddrinfo() или что-то еще я делаю не так?

Редактировать:

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];
Есть еще кто-нибудь, кто подошел к этой проблеме?

0

Решение

[Решение]
В качестве своего рода решения я использую функцию gethostbyname(), Тем не менее, я не очень доволен этим, потому что функция устарела, но теперь я могу получить свой IP. Поэтому я думаю, что проблема заключается либо в моем коде, хотя я могу разрешить другие имена хостов, либо в комбинации функций getaddrinfo() и DDNS.

0

Другие решения


По вопросам рекламы [email protected]