How do I get generate an IP address range given start and end IP address?

Recognize that each of the 4 components of an IPv4 address is really a hex number between 00 and FF.

If you change your start and end IP addresses into 32 bit unsigned integers, you can just loop from the lowest one to the highest one and convert each value you loop through back into the IP address format.

The range in the example you give is C0A80002 to C0A800FE.

Here's a link to code that converts between a hex number and an IPv4 address

http://technojeeves.com/joomla/index.php/free/58-convert-ip-address-to-number


Here's simple implementation that outputs what you asked for:

public static void main(String args[]) {
    String start = "192.168.0.2";
    String end = "192.168.0.254";

    String[] startParts = start.split("(?<=\\.)(?!.*\\.)");
    String[] endParts = end.split("(?<=\\.)(?!.*\\.)");

    int first = Integer.parseInt(startParts[1]);
    int last = Integer.parseInt(endParts[1]);

    for (int i = first; i <= last; i++) {
        System.out.println(startParts[0] + i);
    }
}

Note that this will only work for ranges involving the last part of the IP address.


Start at 2, count to 254, and put a "192.168.0." in front of it:

for (int i = 2; i <= 254; i++) {
    System.out.println("192.168.0." + i);
}

Tags:

Java