DNS域名解析getaddrinfo替换gethostbyname

void DomainToIP(const char * host, const char *portStr, char *ip){
        struct addrinfo hints, *res, *res0;
        char str[32] = {0};

        memset(&hints, 0, sizeof(hints));
        hints.ai_family   = PF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags    = AI_PASSIVE;

        int ret = getaddrinfo(host, portStr, &hints, &res0);
        if (ret != 0) {
            fprintf(stderr,"getaddrinfo: %s\n",
                    gai_strerror(ret));<pre code_snippet_id="582093" snippet_file_name="blog_20150117_2_5030408" name="code" class="cpp">            return;
        }

        for(res = res0; res; res = res->ai_next){
            if(res->ai_family == AF_INET){
                // Found IPv4 address
                inet_ntop(AF_INET,
                          &(((struct sockaddr_in *)(res->ai_addr))->sin_addr),
                          str, 32);
                <span style="font-family: Arial, Helvetica, sans-serif;">printf</span><span style="font-family: Arial, Helvetica, sans-serif;">("解析出来的IP: %s\n", str);</span>
                strncpy(ip, str, 32);
            }else if(res->ai_family == AF_INET6){
                // Found IPv6 address
                inet_ntop(AF_INET6,
                          &(((struct sockaddr_in *)(res->ai_addr))->sin_addr),
                          str, 32);
                printf("解析出来的IP6: %s\n", str);
                strncpy(ip, str, 32);
            }
        }
        freeaddrinfo(res0);
    }
				
时间: 2024-11-06 11:38:07

DNS域名解析getaddrinfo替换gethostbyname的相关文章

服务基础篇 &nbsp; &nbsp; &nbsp; dns 域名解析服务 &nbsp;

实验环境   :     redhat7.2       redhat 6.7      redhat    6.7 搭建主从DNS服务 :         主服务器ip  192.168.1.144     从服务器ip192.168.1.120 客户机   192.168.1.110 服务安装包 修改主配置文件named.conf 监听端口开放 允许任何主机访问 修改named.rfc1912.zone 定义正反向解析区域  ,   服务模式为master  且允许从dns服务器同步数据 修

DNS域名解析过程

前言 本文来自<深入分析Java Web技术内幕>一书,因为本人对DNS不是特别熟悉,这本书关于DNS的部分也已经讲得比较详细了,所以就直接把书里面的内容拿来用了.老规矩,不复制.不黏贴,全部内容手打,边打边学习.理解. DNS域名解析 我们知道互联网都是通过URL来发布和请求资源的,而URL中的域名需要解析成IP地址才能与远程主机建立连接,如何将域名解析成IP地址就属于DNS解析的工作范畴. 可以毫不夸张地说,虽然我们平时上网感受不到DNS解析的存在,但是一旦DNS解析出错,可能会导致非常严

每天进步一点点——负载均衡之DNS域名解析

转载请说明出处:http://blog.csdn.net/cywosp/article/details/38017027 在上一篇文章(http://blog.csdn.net/cywosp/article/details/38014581)中讲到了使用HTTP重定向来实现server的负载均衡,本文则解说还有一种实现server集群的负载均衡方案--DNS域名解析. DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,可以使人更方便

Linux系统安装DNS域名解析服务

在linux系统下安装DNS域名解析服务 步骤如下: 1>查看挂在镜像位置 2>查看光盘是否挂载 3>查看需要挂在的位置 4>进行挂载 [[email protected] mnt]# mount /dev/sr0 /mnt 5>进入挂载的文件夹进行安装 使用rpm命令过滤已bind开头的软件 安装以bind开头的软件 过滤以bind开头的软件 注:默认已安装bind-utils和bind-libs,所以只需要安装bind和bind-chroot. 6>配置DNS的地址

DNS 域名解析

DNS域名解析: A:address 域名向IP地址转换的记录 PTR:Printer ip 地址向域名转换的记录 NS:代表域内的DNS服务器 MX:代表域内的邮服务器 CNAME:域名的别名 SOA:start of authority 用于表示域内主DNS服务器 提供DNS的软件:BIND DNS 域名解析,布布扣,bubuko.com

查看DNS主机名解析的主机IP并向DNS服务器进行DNS域名解析

一.查看DNS主机名解析的主机IP host 命令 用途 把一个主机名解析到一个网际地址或把一个网际地址解析到一个主机名. 语法 host [-n [ -a ] [ -c Class] [ -d ] [ -r ] [ -t Type ] [ -v ] [ -w ] [ -z ]] Hostname | Address [ Server ] hostnew [ -a ] [ -c Class ] [ -d ] [ -r ] [ -t Type ] [ -v ] [ -w ] [ -z ] Host

Linux网络服务05——DNS域名解析服务(一)

Linux网络服务05--DNS域名解析服务(一) 一.DNS系统的作用 1.DNS服务器概述 整个Internet大家庭中连接了数以亿计的服务器.个人主机,其中大部的网站.邮件服务等服务器都使用了域名形式的地址,如crushlinux.google.com.mail.163.com等.很显然这种地址形式要比使用64.233.189.147.202.108.33.74的IP地址形式更加直观,更加容易被用户记住. FQDN格式(完整域名格式):在常见域名后添加"."(根域).例如:cru

【初级篇】Linux下部署DNS域名解析服务

Linux下部署DNS域名解析服务 1.          实验需求: 1)     使用RPM包安装bind服务 2) 实现配置正向解析域名,反向解析IP地址. 3)搭建从服务器,实现配置和主服务器实时同步,相互提供冗余备份. 2.          实验环境: Linux服务器系统版本:Red Hat Enterprise Linux 6.5(主)   IP:192.168.10.20 Linux服务器系统版本:Red Hat Enterprise Linux 6.5(从)   IP:192

一张图看懂DNS域名解析全过程

DNS域名解析是互联网上非常重要的一项服务,上网冲浪(还有人在用这个词吗?)伴随着大量DNS服务来支撑,而对于网站运营来说,DNS域名解析的稳定可靠,意味着更多用户的喜欢,更好的SEO效果和更大的访问流量.我们先了解一下什么是DNS: DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库.DNS能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过域名,最终得到该域名对应的IP地址的过程叫做域名