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

来源:互联网 发布:java实现支付功能 编辑:程序博客网 时间:2024/04/27 20:02

主程序:gethostbyname.c

[cpp] view plaincopy
  1. #include <netdb.h>  
  2. #include <string.h>  
  3. #include <stdio.h>  
  4. int main(int argc, char *argv[])  
  5. {  
  6.     if (argc != 2)  
  7.     {  
  8.         printf("Usage:%s domain_name\n", argv[0]);  
  9.         return 1;  
  10.     }  
  11.     struct hostent *ht = NULL;  
  12.     // char host[20] = "www.google.com";  
  13.     // ht = gethostbyname(host);  
  14.     ht = gethostbyname(argv[1]);  
  15.     if (ht)  
  16.     {  
  17.         int i = 0;  
  18.         printf("Host:%s \n", argv[1]);  /* 原始域名 */  
  19.         printf("Name:%s\n", ht->h_name);    /* 名称 */  
  20.         /*协议族AF_INET为IPv4或者AF_INET6为IPv6 */  
  21.         printf("Type:%s\n", ht->h_addrtype == AF_INET ? "AF_INET" : "AF_INET6");  
  22.         /* IP地址的长度 */  
  23.         printf("Legnth:%d\n", ht->h_length);  
  24.         /* 打印IP地址 */  
  25.         printf("\n");  
  26.         printf("IP Address:\n");  
  27.         for (i = 0;; i++)  
  28.         {  
  29.             if (ht->h_addr_list[i] != NULL)  
  30.             {                   /* 不是IP地址数组的结尾 */  
  31.                 printf("IP:%s\n", inet_ntoa((unsigned int *)ht->h_addr_list[i]));   /*打印IP地址 */  
  32.             }  
  33.             else  
  34.             {                   /*达到结尾 */  
  35.                 break;          /*退出for循环 */  
  36.             }  
  37.         }  
  38.         /* 打印域名地址 */  
  39.         printf("\n");  
  40.         printf("Domain Name:\n");  
  41.         for (i = 0;; i++)  
  42.         {                       /*循环 */  
  43.             if (ht->h_aliases[i] != NULL)  
  44.             {                   /* 没有到达域名数组的结尾 */  
  45.                 printf("alias %d:%s\n", i, ht->h_aliases[i]);   /* 打印域名 */  
  46.             }  
  47.             else  
  48.             {                   /*结尾 */  
  49.                 printf("\n");  
  50.                 break;          /*退出循环 */  
  51.             }  
  52.         }  
  53.     }  
  54.     return 0;  
  55. }  
makefile文件:

[cpp] view plaincopy
  1. CC = gcc  
  2. all:app  
  3.       
  4. app: gethostbyname.o  
  5.     $(CC) gethostbyname.o -o app  
  6.       
  7. clean:  
  8.     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]# 


0 0
原创粉丝点击