Chinaunix首页 | 论坛 | 博客
  • 博客访问: 315116
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 490
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-13 10:58
文章分类

全部博文(82)

文章存档

2018年(2)

2017年(9)

2016年(71)

我的朋友

分类: C/C++

2016-11-23 22:03:55

直接上代码:

  1. #include <stdio.h>
  2. #include <sys/socket.h>
  3. #include <netdb.h>
  4. #include <string.h>
  5. #include <arpa/inet.h>

  6. int main()
  7. {
  8.     struct hostent *hptr = NULL;
  9.     char str[32];

  10.     const char * ptr = "";

  11.     if( (hptr = gethostbyname(ptr) ) == NULL )  //得到域名相关信息,失败返回NULL
  12.     {
  13.         printf("gethostbyname error : %s\n", hstrerror(h_errno)); //打印错误字符串
  14.         return -1;
  15.     }

  16.     struct sockaddr_in me;
  17.     int i = 0;
  18.     for (; hptr->h_addr_list[i]; i++) {  //h_addr_list[i]中有多个ip,则h_addr_list[i]不为空
  19.         memset(&me, 0, sizeof(struct sockaddr_in));
  20.         memcpy(&me.sin_addr, hptr->h_addr_list[i], hptr->h_length);
  21.         printf("address:%s\n", inet_ntop(hptr->h_addrtype, &me.sin_addr, str, sizeof(str)));
  22.         printf("hptr->h_name:%s\n", hptr->h_name);
  23.         printf("me.sin_addr.s_addr [%u]\n", ntohl(me.sin_addr.s_addr)); //网络序转换成主机序
  24.         printf("\n");
  25.     }

  26.     return 0;
  27. }

结果:

  1. [root@localhost util]# ./a.out
  2. address:180.97.33.108
  3. hptr->h_name:www.a.shifen.com
  4. me.sin_addr.s_addr [3026264428] //二进制网络序转成的主机序地址

  5. address:180.97.33.107
  6. hptr->h_name:www.a.shifen.com
  7. me.sin_addr.s_addr [3026264427]


阅读(2191) | 评论(0) | 转发(0) |
0

上一篇:C语言可变参数的使用

下一篇:lua获取时间

给主人留下些什么吧!~~