2014-11-06 193 views
0

我想通過互聯網(使用C++和winsock2)連接客戶端和服務器,因此我在No-IP上註冊了服務器的域名,所以客戶端可以確定它的IP地址,而不必同時在同一個LAN上。但是,當客戶端使用getaddrinfo()從域名確定服務器IP地址時,getaddrinfo()總是返回8.23.224.90(這不是服務器的IP地址)。 Ping統計還顯示該域名的IP地址爲8.23.224.90。在我長時間搜索了這個問題之後,我終於在No-IP網站上發現了這個問題:getaddrinfo():使用No-IP註冊的域的IP地址

「IP地址8.23.224.90和50.19.220.154是我們web重定向服務器的直接位置如果你有一個主機名設置爲Web重定向,端口80重定向或啓用脫機頁面,這些是將分配給您的主機的IP。「

目前這是客戶端如何從域名「主機名」獲取IP地址。我應該添加/更改以獲取真實IP地址?在此先感謝...

int hostname_to_ip(char *hostname, char *ip) { 

    struct addrinfo hints, *servinfo, *p; 
    struct sockaddr_in *h; 

    memset(&hints,0,sizeof(hints)); 
    hints.ai_family=AF_INET; 
    hints.ai_socktype=SOCK_STREAM; 

    getaddrinfo(hostname,NULL,&hints,&servinfo); 
    for (p=servinfo; p!=NULL; p=p->ai_next) { 
     h=(struct sockaddr_in*)p->ai_addr; 
     strcpy(ip,inet_ntoa(h->sin_addr)); 
    } 

} 

回答

0

不要將您的主機名設置爲Web重定向,而應設置爲DNS A記錄。有關their website的更多詳細信息。