Linux 查看域名信息 h_addr_list[]Segmentation fault (core dumped) 为什么出这种错

发布网友 发布时间: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循环 */
}
}
这样试试。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com