发布网友 发布时间:2022-04-27 13:27
共1个回答
热心网友 时间:2023-09-24 12:09
for(i=0; i < h->h_length;i++)
{
printf("IP adderss %d :%s\n",i+1,inet_ntoa(*(struct in_addr *)h->h_addr_list[i]));
}
这个地方错了。
struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
#define h_addr h_addr_list[0]
};
h_length 表示的是主机ip地址的长度
h_addr_list :表示的是主机的ip地址
所以应该是直接打印:
printf("IP adderss:%s\n",inet_ntoa(*(struct in_addr *)h->h_addr_list));追问查看域名信息,应该有多个结果吧,如果直接打印的话,只能出一个,h_addr_list是一个二元数组好像。。。怎样输出多个ip地址?求教啊
追答for (i = 0;; i++)
{
if (ht->h_addr_list[i] != NULL)
{ /* 不是IP地址数组的结尾 */
printf("IP:%s\n", inet_ntoa((unsigned int *)ht->h_addr_list[i])); /*打印IP地址 */
}
else
{ /*达到结尾 */
break; /*退出for循环 */
}
}
这样试试。