我想通过互联网连接一个客户端和一个服务器(使用 C++ 和 winsock2),所以我在 No-IP 上为服务器注册了一个域名,这样客户端就可以确定它的 IP 地址,而不必与服务器在同一个 LAN 上。但是当客户端使用 getaddrinfo() 根据域名确定服务器 IP 地址时,getaddrinfo() 总是返回 8.23.224.90(这不是服务器的 IP 地址)。Ping 统计信息也显示域名的 IP 地址为 8.23.224.90。我在 google 上搜索了很长时间后,最终在 No-IP 网站上找到了这个:
“IP 地址 8.23.224.90 和 50.19.220.154 是我们 Web 重定向服务器的直接位置。如果您将主机名设置为 Web 重定向、端口 80 重定向或启用了离线页面,则这些 IP 将分配给您的主机。”
目前,这是客户端从域名“hostname”获取 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));
}
}
答案1
我不知道 No-Ip Plus 配置面板,但我猜这与免费部分非常相似。
如果您的 DNS 配置为使用 Web 功能,则在 No-Ip 服务器上重定向是合乎逻辑的。确保未选中“端口 80 重定向”或“Web 重定向”等选项。
您需要的是“DNS 主机 (A)”(将您的 DNS 重定向到 IPv4)。
您的更改可能需要几分钟才能生效(默认 TTL 为 1 分钟,因此请等待至少一分钟再试)