В настоящее время я работаю над программой, которая рассказывает мне, помимо прочего, мой внешний IP-адрес. Для этого я использую функцию getaddrinfo()
.
Для целей тестирования я прошел google.com
в качестве имени узла, он работал нормально.
Если я передаю свои динамические dns функции, я получаю 0.0.0.0
как IP, но я ожидаю свой собственный внешний IP. Я также попробовал динамический dns от друга с тем же результатом.
Насколько я могу получить IP-адрес от google.com
, проблема не должна быть моим кодом.
Невозможно ли получить IP-адрес от динамического dns с помощью getaddrinfo()
или есть что-то еще, что я делаю неправильно?C++ - getaddrinfo() - получение собственного внешнего IP-адреса с динамическими dns сбой
Edit:
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
является globaly определено: char IP[INET_ADDRSTRLEN];
Есть ли кто-то, кто пришел по этому вопросу?
Что вы имеете в виду под своим динамическим dns? – wimh
@Wimmel Насколько я получил динамический IP, который меняется каждые 24 часа, я получил динамический dns ('daniel-nas.computer'), который указывает на мой динамический адрес. Этот динамический dns обновляется один раз 24 часа. И это адрес, который я передаю 'getaddrinfo()'. – Daniel
ОК, так что это динамическая служба DNS, предоставляемая вашим провайдером. Я думаю, что это должно сработать (если вы также можете использовать имя хоста в другом программном обеспечении на вашем компьютере). Я не знаю, почему это не сработает для вас. – wimh