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