How can generate a range of IP addresses from a start and end IP address?
Example for a network "192.168.0.0/24":
String start = "192.168.0.2"
String end = "192.168.0.254"
I want to have:
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
...
192.168.0.254
PS: Network, start and end IP can be dynamic above is just an example.
Thanks...
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With