检索并打印一个DNS主机条目

检索并打印一个DNS主机条目的 C 程序 --- Linux/Unix

/*************************************************************************
* File Name: hostinfo.c
* Author: Chen WenKe
* Email: chenwenke666@gmail.com
* Blog: https://caotanxiaoke.github.io
* Created Time: Tue 13 Jun 2017 11:30:34 PM PDT
*
* Description: 
    检索并打印一个 DNS 主机条目。     
 ************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netdb.h>  // for gethostbyname() / gethostbyaddr()

int main(int argc, char **argv)
{
    char **pp;
    struct in_addr addr; 
    struct hostent *hostp; 

    if (argc != 2)
    {
        fprintf(stderr, "usage: %s <domain name or dotted-decimal>\n", argv[0]);
        exit(0);
    }

    if (inet_aton(argv[1], &addr) != 0)
        hostp = gethostbyaddr((const char *)&addr, sizeof(addr), AF_INET);
    else
        hostp = gethostbyname(argv[1]); 

    printf("official hostname: %s\n", hostp->h_name); 

    for (pp = hostp->h_aliases; *pp != NULL; pp++)
    {
        printf("alias: %s\n", *pp); 
    }

    for (pp = hostp->h_addr_list; *pp != NULL; pp++)
    {
        addr.s_addr = ((struct in_addr *)*pp)->s_addr; 
        printf("address: %s\n", inet_ntoa(addr)); 
    }

    exit(0); 
}

编译:
gcc -o hostinfo hostinfo.c

测试:
./hostinfo baidu.com



posted @ 2017-06-14 15:40  草滩小恪  阅读(212)  评论(0编辑  收藏  举报