C咖咖 2015-06-10 08:12 采纳率: 0%
浏览 2110

centos上通过dns方式调用gethostbyname函数获取IP地址,还需要哪些设置吗?

对端IP地址可能会改变,想通过dns方式来获取对端IP地址。即在本地文件中配置对端网址,通过该网址获取到IP。我写了如下代码,ping www.baidu.com有回复报文,但是程序却得到IP地址,还需要什么配置吗?请高手指导下,谢谢!
int main(int argc, char **argv)
{
char **pptr = NULL;
struct hostent *hptr = NULL;
char str[32] = {0};
char *dns_data = NULL;
char *filename = "/home/qshy/dns_test.c";

//读取配置文件数据(即对端网址)
if (-1 == read_dns(filename, &dns_data))
{
    printf("read_dns failed.\n");
    return -1;
}

if((hptr = gethostbyname(dns_data)) == NULL)
{
    printf(" gethostbyname error for host:%s\n", dns_data);
    printf("error:%s\n", strerror(errno));
    free(dns_data);
    return 0;
}

free(dns_data);
//printf("official hostname:%s\n",hptr->h_name);
//for(pptr = hptr->h_aliases; *pptr != NULL; pptr++)
//    printf(" alias:%s\n",*pptr);

switch(hptr->h_addrtype)
{
    case AF_INET:
    case AF_INET6:
        pptr=hptr->h_addr_list;
        for(; *pptr!=NULL; pptr++)
            printf(" address:%s\n",
                   inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
        //printf(" first address: %s\n",
        //           inet_ntop(hptr->h_addrtype, hptr->h_addr, str, sizeof(str)));
    break;

    default:
        printf("unknown address type\n");
    break;
}

free(dns_data);

return 0;

}

  • 写回答

1条回答 默认 最新

  • oyljerry 2015-06-10 14:54
    关注

    是没有获取到ip地址吧?可以查看一下错误信息,是不是网络问题或者防火墙

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况