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));
}
}