[英]How do I get generate an IP address range given start and end IP address?
如何從起始 IP 地址和結束 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可以是動態的,上面只是一個例子。
謝謝...
認識到 IPv4 地址的 4 個組成部分中的每一個實際上都是一個介於 00 和 FF 之間的十六進制數。
如果您將起始和結束 IP 地址更改為 32 位無符號整數,您只需從最低的一個到最高的一個循環,然后將您循環的每個值轉換回 IP 地址格式。
您給出的示例中的范圍是 C0A80002 到 C0A800FE。
這是在十六進制數和 IPv4 地址之間轉換的代碼的鏈接
http://technojeeves.com/joomla/index.php/free/58-convert-ip-address-to-number
這是輸出您要求的簡單實現:
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 地址最后一部分的范圍。
從 2 開始,數到 254,然后輸入“192.168.0”。 在它面前:
for (int i = 2; i <= 254; i++) {
System.out.println("192.168.0." + i);
}
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);
}
}
使用IPAddress Java 庫,您可以使用透明地處理 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.