Chinaunix首页 | 论坛 | 博客
  • 博客访问: 439811
  • 博文数量: 132
  • 博客积分: 2511
  • 博客等级: 大尉
  • 技术积分: 1385
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-11 15:10
文章分类

全部博文(132)

文章存档

2012年(18)

2011年(35)

2010年(60)

2009年(19)

分类: LINUX

2011-05-18 15:39:30

要分析几个ip,写了个小程序,类似于ipcalc的功能,不过简单得多。
 
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <netinet/in.h>
  5. #include <arpa/inet.h>
  6. #include <sys/socket.h>
  7. #include <stdint.h>

  8. int main(int argc, char **argv)
  9. {
  10.     uint32_t ip_net, mask_net;
  11.     uint32_t ip_host, mask_host;
  12.     uint32_t ip_start, ip_end;
  13.     struct in_addr in_start, in_end;

  14.     if(argc != 3)
  15.     {
  16.         printf("usage:%s ip mask\n", argv[0]);
  17.         exit(1);
  18.     }

  19.     ip_net = inet_addr(argv[1]);
  20.     mask_net = inet_addr(argv[2]);

  21.     ip_host = ntohl(ip_net);
  22.     mask_host = ntohl(mask_net);

  23.     ip_start = ip_host & mask_host;
  24.     ip_end = ip_host | (~mask_host);

  25.     printf("ip_start:%x,", ip_start);
  26.     printf("ip_end:%x\n", ip_end);

  27.     in_start.s_addr = ntohl(ip_start);
  28.     in_end.s_addr = ntohl(ip_end);
  29.     printf("ip start:%s,", inet_ntoa(in_start));
  30.     printf("ip end:%s\n", inet_ntoa(in_end));

  31.     return 0;
  32. }

 

执行效果:

./ip_mask_scope 10.24.55.0 255.255.240.0
ip_start:a183000,ip_end:a183fff
ip start:10.24.48.0,ip end:10.24.63.255
ipcalc 10.24.55.0/255.255.240.0
Address:   10.24.55.0           00001010.00011000.0011 0111.00000000
Netmask:   255.255.240.0 = 20   11111111.11111111.1111 0000.00000000
Wildcard:  0.0.15.255           00000000.00000000.0000 1111.11111111
=>
Network:   10.24.48.0/20        00001010.00011000.0011 0000.00000000
HostMin:   10.24.48.1           00001010.00011000.0011 0000.00000001
HostMax:   10.24.63.254         00001010.00011000.0011 1111.11111110
Broadcast: 10.24.63.255         00001010.00011000.0011 1111.11111111
Hosts/Net: 4094                  Class A, Private Internet

阅读(1095) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~