• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            域名,ip相互轉換(Linux,getaddrinfo, getnameinfo)--- 轉

            參考鏈接:

            http://en.wikipedia.org/wiki/Getaddrinfo

            代碼:

             

            01/* ip_to_hostname ip */
            02#include <sys/types.h>
            03#include <sys/socket.h>
            04#include <netdb.h>
            05#include <unistd.h>
            06#include <stdio.h>
            07#include <stdlib.h>
            08#include <string.h>
            09 
            10int main(int argc, char *argv[])
            11{
            12        if (argc != 2)
            13        {
            14                fprintf(stderr, "Usage: %s hostname\n", argv[0]);
            15                exit(EXIT_FAILURE);
            16        }
            17        struct addrinfo hints;
            18        struct addrinfo *result, *result_pointer;
            19        int ret;
            20        /* obtaining address matching host */
            21        memset(&hints, 0, sizeof(struct addrinfo));
            22        hints.ai_family = AF_UNSPEC;
            23        hints.ai_socktype = SOCK_STREAM;
            24        hints.ai_flags = AI_CANONNAME | AI_NUMERICHOST;
            25        hints.ai_protocol = 0;  /* any protocol */
            26 
            27//      ret = getaddrinfo(argv[1], NULL, &hints, &result);                                                                                                            
            28        ret = getaddrinfo(argv[1], NULL, &hints, &result);
            29        if (ret != 0)
            30        {
            31                fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(ret));
            32                exit(EXIT_FAILURE);
            33        }
            34        /* traverse the returned list and output the ip addresses */
            35        for (result_pointer = result; result_pointer != NULL; result_pointer = result_pointer->ai_next)
            36        {
            37                char hostname[1025] = "";
            38                ret = getnameinfo(result_pointer->ai_addr, result_pointer->ai_addrlen, hostname, sizeof(hostname), NULL, 0, NI_NAMEREQD);
            39                if (ret != 0)
            40                {
            41                        fprintf(stderr, "error in getnameinfo: %s \n", gai_strerror(ret));
            42                }
            43                else
            44                {
            45                        printf("hostname: %s \n", hostname);
            46                }
            47//              printf("hostname: %s \n", result_pointer->ai_canonname);                                                                                              
            48        }
            49        freeaddrinfo(result);
            50        exit(EXIT_SUCCESS);
            51}

             

             

            01/* hostname_to_ip hostname */
            02#include <sys/types.h>
            03#include <sys/socket.h>
            04#include <netdb.h>
            05#include <unistd.h>
            06#include <stdio.h>
            07#include <stdlib.h>
            08#include <string.h>
            09 
            10int main(int argc, char *argv[])
            11{
            12        if (argc != 2)
            13        {
            14                fprintf(stderr, "Usage: %s hostname\n", argv[0]);
            15                exit(EXIT_FAILURE);
            16        }
            17        struct addrinfo hints;
            18        struct addrinfo *result, *result_pointer;
            19        int ret;
            20        /* obtaining address matching host */
            21        memset(&hints, 0, sizeof(struct addrinfo));
            22        hints.ai_family = AF_UNSPEC;
            23        hints.ai_socktype = SOCK_STREAM;
            24        hints.ai_flags = AI_CANONNAME;
            25        hints.ai_protocol = 0;  /* any protocol */
            26 
            27//      ret = getaddrinfo(argv[1], NULL, &hints, &result);                                                                                                            
            28        ret = getaddrinfo(argv[1], NULL, &hints, &result);
            29        if (ret != 0)
            30        {
            31                fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(ret));
            32                exit(EXIT_FAILURE);
            33        }
            34        /* traverse the returned list and output the ip addresses */
            35        for (result_pointer = result; result_pointer != NULL; result_pointer = result_pointer->ai_next)
            36        {
            37                char hostname[1025] = "";
            38                ret = getnameinfo(result_pointer->ai_addr, result_pointer->ai_addrlen, hostname, sizeof(hostname), NULL, 0, NI_NUMERICHOST);
            39                if (ret != 0)
            40                {
            41                        fprintf(stderr, "error in getnameinfo: %s \n", gai_strerror(ret));
            42                        continue;
            43                }
            44                else
            45                {
            46                        printf("IP: %s \n", hostname);
            47                }
            48        }
            49        freeaddrinfo(result);
            50        exit(EXIT_SUCCESS);
            51}

             

            結果:

            root@localhost :/home/James/mypro/Linux-Pro/Network# ./hostname_to_ip baidu.com
            IP: 123.125.114.144
            IP: 220.181.111.85
            IP: 220.181.111.86
            root@localhost :/home/James/mypro/Linux-Pro/Network# ./ip_to_hostname 220.181.111.86
            error in getnameinfo: Name or service not known
            root@localhost :/home/James/mypro/Linux-Pro/Network# ./ip_to_hostname 10.0.0.78
            hostname: localhost

            root@localhost:/home/James/mypro/Linux-Pro/Network# ./ip_to_hostname 59.66.137.62
            hostname: th137062.ip.tsinghua.edu.cn
            root@localhost:/home/James/mypro/Linux-Pro/Network# ./ip_to_hostname 202.106.182.229
            hostname: mail182-229.sinamail.sina.com.cn
            root@localhost:/home/James/mypro/Linux-Pro/Network# ./ip_to_hostname 211.147.4.7
            hostname: mail3.douban.com

            posted on 2012-11-12 14:44 大龍 閱讀(4175) 評論(0)  編輯 收藏 引用

            伊人精品久久久久7777| 久久精品国产亚洲AV无码麻豆| 国产一区二区精品久久| 狠狠88综合久久久久综合网| 久久免费小视频| 久久久久av无码免费网| 精品国际久久久久999波多野| 精品多毛少妇人妻AV免费久久| 国产69精品久久久久99尤物| 久久人人超碰精品CAOPOREN| 亚洲?V乱码久久精品蜜桃| 国产91久久精品一区二区| 精品国产青草久久久久福利| www.久久精品| 中文精品久久久久人妻不卡| 久久国产成人| 国产成人精品免费久久久久| 久久久久亚洲av成人无码电影| 色诱久久久久综合网ywww| 久久天天日天天操综合伊人av| 久久久精品2019免费观看| 国产精品久久久天天影视| 性高湖久久久久久久久AAAAA| 久久96国产精品久久久| 久久人妻少妇嫩草AV无码蜜桃| 香蕉aa三级久久毛片| 少妇久久久久久被弄高潮| 久久99热这里只频精品6| 国产精品久久久99| 久久精品国产影库免费看| 久久婷婷五月综合97色| 久久婷婷五月综合成人D啪| 久久综合久久伊人| 亚洲午夜精品久久久久久浪潮| 国产精品一区二区久久精品无码| 久久国语露脸国产精品电影| 久久久久亚洲AV无码专区网站| 91精品日韩人妻无码久久不卡| 国产精品青草久久久久福利99 | 一本一本久久A久久综合精品| 久久久久人妻精品一区三寸蜜桃|