• <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)  編輯 收藏 引用

            欧美久久一级内射wwwwww.| 综合久久国产九一剧情麻豆| 久久中文字幕精品| 久久精品视频一| 亚洲午夜久久久久久久久久| 久久久久久久97| 久久久久国产日韩精品网站| 亚洲精品第一综合99久久| 亚洲AV日韩AV天堂久久| 91精品日韩人妻无码久久不卡| 色综合久久综合网观看| 香蕉久久久久久狠狠色| 精品久久无码中文字幕| 性欧美大战久久久久久久| 色偷偷偷久久伊人大杳蕉| 久久99热这里只频精品6| 狠狠综合久久综合中文88| 久久亚洲国产中v天仙www| 午夜视频久久久久一区 | 久久精品亚洲日本波多野结衣| 伊人色综合久久天天| 亚洲AV无码久久精品成人| 久久综合伊人77777麻豆| 亚洲乱亚洲乱淫久久| 一本一本久久A久久综合精品 | 四虎国产精品免费久久5151| 无码人妻久久久一区二区三区| 久久99精品九九九久久婷婷| 久久精品中文字幕久久| 久久人人爽人人爽人人AV东京热 | 久久婷婷五月综合色高清| 国产精品久久久香蕉| 伊人伊成久久人综合网777| 怡红院日本一道日本久久| 久久精品国产99久久无毒不卡| 99久久免费国产精品特黄| 香港aa三级久久三级老师2021国产三级精品三级在 | 久久亚洲精品成人av无码网站| 亚洲综合伊人久久综合| 精品国产乱码久久久久久呢| 亚洲AV无码久久精品狠狠爱浪潮|