【问题标题】:How to get the ip range out of a CIDR Notation or an address netmask pair using Java如何使用 Java 从 CIDR 表示法或地址网络掩码对中获取 IP 范围
【发布时间】:2011-11-27 00:20:17
【问题描述】:

例如:
如何获取 CIDR 表示法 10.66.114.0/24 的低位高位 ip 地址
在这种情况下,答案是:
10.66.114.1 - 10.66.114.254

【问题讨论】:

标签: java ip netmask


【解决方案1】:

这里是它的要点(我是一个 C 家伙):

unsigned int network = 0x0a427200; /* 10.66.114.0 */
unsigned int subnet_length = 24;

unsigned int mask = 0xfffffff << (32 - subnet_length);
unsigned int bcast = 0xffffffff >> (32 - subnet_length);

unsigned int start_ip = (network & mask) + 1;
unsigned int end_ip = (network & mask) + (bcast - 1);

【讨论】:

    【解决方案2】:
    #include <ncurses.h>
    // ncurses.h includes stdio.h
    #include <math.h>
    #include <stdlib.h>
    
    // determine network range of masked ip. eg: 192.168.113.0/25
    // unsigned int network = 0x0a427200; /* 10.66.114.0 */
    // unsigned int subnet_length = 24;
    // 
    // unsigned int mask = 0xfffffff << (32 - subnet_length);
    // unsigned int bcast = 0xffffffff >> (32 - subnet_length);
    // 
    // unsigned int start_ip = (network & mask) + 1;
    // unsigned int end_ip = (network & mask) + (bcast - 1);
    
    
    int main(int argc, char *argv[])
    {
    //  char arg[50] = " ";
        char ipmask[50] = "192.168.113.0/25";
    // determine network range of masked ip. eg: 192.168.113.0/25
        unsigned int network = 0xc0a87100; /* 192.168.113.0 */
        unsigned int subnet_length = 25;
    
        unsigned int mask = 0xfffffff << (32 - subnet_length);
        unsigned int bcast = 0xffffffff >> (subnet_length);
    //   unsigned int bcast = 0xffffffff >> (32 - subnet_length);
    
        unsigned int start_ip = (network & mask) + 1;
        unsigned int end_ip = (network & mask) + (bcast);
    
        initscr();
        cbreak();
        printw("\nipmask %s\nstart %x end %x range %x\n"
          "press any key\n", ipmask, start_ip, end_ip, end_ip - start_ip + 1);
    
        getch();
        endwin(); // close ncurses library and restores previous console
        return(0);
    
    }
    /*****************************************************************************/
    // end netmask
    
        gcc -Wall netmask.c -o netmask -lm -lncurses
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2016-08-25
      • 2010-12-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多