现在的位置: 首页 > 综合 > 正文

Linux网络编程:gethostbyname()的应用

2013年10月09日 ⁄ 综合 ⁄ 共 1449字 ⁄ 字号 评论关闭

主程序:gethostbyname.c

#include <netdb.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        printf("Usage:%s domain_name\n", argv[0]);
        return 1;
    }
    struct hostent *ht = NULL;
    // char host[20] = "www.google.com";
    // ht = gethostbyname(host);
    ht = gethostbyname(argv[1]);
    if (ht)
    {
        int i = 0;
        printf("Host:%s \n", argv[1]);  /* 原始域名 */
        printf("Name:%s\n", ht->h_name);    /* 名称 */
        /*协议族AF_INET为IPv4或者AF_INET6为IPv6 */
        printf("Type:%s\n", ht->h_addrtype == AF_INET ? "AF_INET" : "AF_INET6");
        /* IP地址的长度 */
        printf("Legnth:%d\n", ht->h_length);
        /* 打印IP地址 */
        printf("\n");
        printf("IP Address:\n");
        for (i = 0;; i++)
        {
            if (ht->h_addr_list[i] != NULL)
            {                   /* 不是IP地址数组的结尾 */
                printf("IP:%s\n", inet_ntoa((unsigned int *)ht->h_addr_list[i]));   /*打印IP地址 */
            }
            else
            {                   /*达到结尾 */
                break;          /*退出for循环 */
            }
        }
        /* 打印域名地址 */
        printf("\n");
        printf("Domain Name:\n");
        for (i = 0;; i++)
        {                       /*循环 */
            if (ht->h_aliases[i] != NULL)
            {                   /* 没有到达域名数组的结尾 */
                printf("alias %d:%s\n", i, ht->h_aliases[i]);   /* 打印域名 */
            }
            else
            {                   /*结尾 */
                printf("\n");
                break;          /*退出循环 */
            }
        }
    }
    return 0;
}

makefile文件:

CC = gcc
all:app
	
app: gethostbyname.o
	$(CC) gethostbyname.o -o app
	
clean:
	rm -f app *.o

运行效果:

[root@ShiGuang gethostbyname]# make
gcc    -c -o gethostbyname.o gethostbyname.c
gcc gethostbyname.o -o app
[root@ShiGuang gethostbyname]# ls
app  gethostbyname.c  gethostbyname.o  Makefile
[root@ShiGuang gethostbyname]# ./app www.google.com.hk
Host:www.google.com.hk 
Name:www-hk.l.google.com
Type:AF_INET
Legnth:4

IP Address:
IP:72.17.67.8
IP:80.17.67.8
IP:88.17.67.8
IP:96.17.67.8
IP:104.17.67.8
IP:112.17.67.8

Domain Name:
alias 0:www.google.com.hk

[root@ShiGuang gethostbyname]# 

抱歉!评论已关闭.