关闭

关于Linux网络程序的一些小问题

102人阅读 评论(0) 收藏 举报

我在实现深入理解计算机随书代码的时候 发现在

int main(int argc, char **argv) 

{
    char **pp;
    struct in_addr addr;
    struct hostent *hostp;


    if (argc != 2) {
fprintf(stderr, "usage: %s <domain name or dotted-decimal>\n", 
argv[0]);
exit(0);
    }


    if (inet_aton(argv[1], &addr) != 0) 
hostp = Gethostbyaddr((const char *)&addr, sizeof(addr), AF_INET); 
    else                                
hostp = Gethostbyname(argv[1]);


    printf("official hostname: %s\n", hostp->h_name);


    for (pp = hostp->h_aliases; *pp != NULL; pp++)
printf("alias: %s\n", *pp);


    for (pp = hostp->h_addr_list; *pp != NULL; pp++) {
addr.s_addr = ((struct in_addr *)*pp)->s_addr;
printf("address: %s\n", inet_ntoa(addr));
    }
    exit(0);
}

/* $end hostinfo */



老是提示段错误  没有其他提示 也不知道为什么错误 后来定位到时inet_ntoa()函数的原因 




加上<arpa/inet.h>头文件后就好了 虽然不知道为什么 按照我的想法 如果没加头文件函数应该是没有定义的啊 但是为什么编译能过啊

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15946次
    • 积分:276
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:46篇
    • 译文:0篇
    • 评论:0条
    文章分类