getaddrinfo():使用No-IP注册的域的IP地址

问题描述:

我想通过互联网(使用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)); 
    } 

} 

不要将您的主机名设置为Web重定向,而应设置为DNS A记录。有关their website的更多详细信息。