В настоящее время я работаю над программой, которая сообщает мне, помимо прочего, мой внешний 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];
Есть еще кто-нибудь, кто подошел к этой проблеме?
[Решение]
В качестве своего рода решения я использую функцию gethostbyname()
, Тем не менее, я не очень доволен этим, потому что функция устарела, но теперь я могу получить свой IP. Поэтому я думаю, что проблема заключается либо в моем коде, хотя я могу разрешить другие имена хостов, либо в комбинации функций getaddrinfo()
и DDNS.