我试图从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 = %s\n", 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
发布于 2021-07-14 17:48:19
这是一个愚蠢的问题。首先,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));
}然后,不知何故,它成功了。我不知道为什么它会通过改变迭代的方式来工作。
https://stackoverflow.com/questions/68110052
复制相似问题