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

            久久九九精品99国产精品| 99久久精品免费国产大片| 久久露脸国产精品| 日韩亚洲国产综合久久久| 国产精品一区二区久久精品涩爱 | 国产精品免费久久久久久久久 | 日韩精品无码久久一区二区三| 日韩欧美亚洲综合久久影院Ds| 人妻精品久久无码专区精东影业| 狠色狠色狠狠色综合久久 | 亚洲精品高清一二区久久| 无码人妻久久一区二区三区免费| 青青热久久综合网伊人| 久久久久精品国产亚洲AV无码| 国产精品一区二区久久| 久久人妻少妇嫩草AV蜜桃| 一本伊大人香蕉久久网手机| 久久精品国产久精国产一老狼| 国产一区二区精品久久| 久久这里只有精品首页| 国内精品久久久久久不卡影院| 精品久久久无码人妻中文字幕| 999久久久免费国产精品播放| 久久婷婷五月综合97色一本一本 | 欧美激情精品久久久久久久九九九| 亚洲欧美一级久久精品| 色综合色天天久久婷婷基地| 久久综合精品国产二区无码| 一本大道久久香蕉成人网| 国产成人精品久久一区二区三区av| 色88久久久久高潮综合影院| 2020国产成人久久精品| segui久久国产精品| 久久青青草原国产精品免费| 国产精品禁18久久久夂久| 久久精品国产亚洲av高清漫画| 国产亚洲精品久久久久秋霞| 波多野结衣久久精品| 久久人人爽人人爽人人片AV不| 2021国产精品午夜久久| 亚洲欧美久久久久9999|