如何从起始和结束IP地址生成一系列IP地址?
网络示例“192.168.0.0/24”:
String start = "192.168.0.2"
String end = "192.168.0.254"
我希望:
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
...
192.168.0.254
PS:网络,开始和结束IP都可以动态上面只是一个例子。
...谢谢
答案 0 :(得分:10)
认识到IPv4地址的4个组成部分中的每一个都是00到FF之间的十六进制数。
如果将开始和结束IP地址更改为32位无符号整数,则可以从最低的一个循环到最高的一个,并将循环的每个值转换回IP地址格式。
您给出的示例中的范围是C0A80002到C0A800FE。
这是一个代码链接,用于在十六进制数和IPv4地址之间进行转换
http://technojeeves.com/joomla/index.php/free/58-convert-ip-address-to-number
答案 1 :(得分:3)
这是一个简单的实现,输出您要求的内容:
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);
}
}
请注意,这将仅适用于涉及IP地址的 last 部分的范围。
答案 2 :(得分:2)
从2开始,计数到254,然后输入“192.168.0”。在它面前:
for (int i = 2; i <= 254; i++) {
System.out.println("192.168.0." + i);
}
答案 3 :(得分:1)
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);
}
}
答案 4 :(得分:0)
通过The IPAddress Java library,您可以透明地使用可同时用于IPv4和IPv6的代码。免责声明:我是IPAddress库的项目经理。
以下是示例代码:
String start = "192.168.0.2", end = "192.168.0.254";
iterate(start, end);
System.out.println();
start = "::1";
end = "::100";
iterate(start, end);
static void iterate(String lowerStr, String upperStr) throws AddressStringException {
IPAddress lower = new IPAddressString(lowerStr).toAddress();
IPAddress upper = new IPAddressString(upperStr).toAddress();
IPAddressSeqRange range = lower.toSequentialRange(upper);
for(IPAddress addr : range.getIterable()) {
System.out.println(addr);
}
}
输出:
192.168.0.2
192.168.0.3
192.168.0.4
...
192.168.0.254
::1
::2
::3
...
::100