我试图从URL
获取IP
地址,但gethostbyname
总是说Unknown host
。希望有人能指出我的错。这是我的代码
char *handleAddress(char *URL)
{
struct hostent *he;
struct in_addr **addr_list;
int i;
char *ip = NULL;
printf("Search IP for this = %sn", URL);
if ((he = gethostbyname(URL)) == NULL) // get the host info
{
herror("gethostbyname");
ip = "No Such DNS";
return ip;
}
addr_list = (struct in_addr **)he->h_addr_list;
for (i = 0; addr_list[i] != NULL; i++) //Return the first one;
{
strcpy(ip, inet_ntoa(*addr_list[i]));
return ip;
}
}
预期:URL:www.google.com
返回IP:173.194.72.106
这是一个愚蠢的问题。首先,URL
最终不应该有n
。第二,我把循环改为
char **he_ptr;
he_ptr = he->h_addr_list;
for (; *he_ptr != NULL; he_ptr++)
{
return inet_ntop(he->h_addrtype, *he_ptr, buff, sizeof(buff));
}
然后,不知怎么的,它起了作用。我不明白为什么它通过改变迭代的方式来工作