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

主程序:gethostbyname.c

[cpp]  view plain copy
  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 plain copy
  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值