4
我试图使用getaddrinfo()来解析URL的IP地址,但它总是返回错误的IP地址,我尝试了几个URL并且结果相同。任何帮助将不胜感激。getaddrinfo()函数返回错误的IP地址
程序returnes IP地址:209.85.175.99 insted的回归真正的IP是74.125.39.147
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int
main()
{
char *hostname = "www.google.lk";
struct addrinfo hints, *res;
struct in_addr addr;
int err;
memset(&hints, 0, sizeof(hints));
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = AF_INET;
if ((err = getaddrinfo(hostname, NULL, &hints, &res)) != 0) {
printf("error %d\n", err);
return 1;
}
addr.s_addr = ((struct sockaddr_in *)(res->ai_addr))->sin_addr.s_addr;
printf("ip address : %s\n", inet_ntoa(addr));
freeaddrinfo(res);
return 0;
}
你是否支持某种代理?或者你的etc/hosts中有什么错误? – phoet
你确定你弄错了吗? > NSLOOKUP www.google.lk 服务器:DIR-320 地址:192.168.0.1 非权威的答案: 名称:www.l.google.com 地址:209.85.148.147 209.85.148.99 209.85 .148.103 209.85.148.104 209.85.148.105 209.85.148.106 别名:www.google.lk www.google.com –
也许你应该有一个更straightofrward分辨率比谷歌服务器的多个层的名称重别名和循环解析。 'stackoverflow.com'如何? (Google服务器名称的解析甚至取决于解决问题的位置) –