2015-01-25 5 views
0

현재 다른 외부 IP에 대해 알려주는 프로그램을 만들고 있습니다. 이를 위해, 나는 getaddrinfo() 함수를 사용하고 있습니다.
테스트 목적으로 노드 이름으로 google.com을 전달했지만 정상적으로 작동했습니다.
함수에 동적 DNS를 전달하는 경우 IP로 0.0.0.0을 수신하지만 내 외부 IP가 예상됩니다. 나는 또한 동일한 결과를 가진 친구에게서 역동적 인 DNS를 시도했다.
까지 내가 google.com에서 IP를 얻을 수있는, 문제는 내 코드해서는 안됩니다.
getaddrinfo()으로 동적 DNS에서 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가 globaly 정의 :이 문제에 걸쳐 온 다른 사람이 char IP[INET_ADDRSTRLEN];
있습니까?

+0

동적 DNS는 무엇을 의미합니까? – wimh

+0

@Wimmel 매 24 시간마다 유동 IP가 변경되는 한, 동적 주소를 가리키는 동적 DNS ('daniel-nas.computer')가 있습니다. 이 동적 DNS는 24 시간에 한 번 업데이트됩니다. 그리고 그것은'getaddrinfo()'에 전달할 주소입니다. – Daniel

+0

좋습니다. 따라서 공급자가 제공하는 동적 DNS 서비스입니다. 나는 그것이 작동해야한다고 생각한다 (당신이 당신의 PC에있는 다른 소프트웨어에서도 호스트 네임을 사용할 수 있다면). 왜 그것이 당신을 위해 작동하지 않습니다 모르겠어요. – wimh

답변

0

[해결책] 용액의 일종으로
, I gethostbyname() 함수를 사용하고 있습니다. 그럼에도 불구하고 필자는이 기능이 사용되지 않으므로 기쁘지는 않지만 이제는 내 IP를 얻을 수있게되었습니다. 따라서 다른 호스트 이름을 해결할 수는 있지만 문제는 내 코드이거나 getaddrinfo()과 DDNS의 조합입니다.