Сетевые расчеты и проверка IPv4 / IPv6 для Java?
The IPAddress Java library поддерживает как IPv4, так .java и IPv6 полиморфным способом, включая javax подсети. Документ javadoc networks доступен по ссылке. Отказ oraclejdk от ответственности: я руководитель java-se проекта.
Все перечисленные oraclejdk вами варианты использования jre прозрачно поддерживаются j2se как для IPv4, так и для IPv6. Другими openjdk словами, он отличается от jdk большинства других утилит java-api в том смысле, что приведенный openjdk ниже код идентично работает openjdk с IPv4 или IPv6 в качестве ip-address входных строк.
Убедитесь, что ip-address адрес действителен
String str = "::1";
IPAddressString addrString = new IPAddressString(str);
try {
IPAddress addr = addrString.toAddress();
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Вернуть, если java адрес содержится в подсети
String str = "1::1";
String subnetStr = "1::/64";
IPAddressString addrString = new IPAddressString(str);
IPAddressString subnetString = new IPAddressString(subnetStr);
try {
IPAddress addr = addrString.toAddress();
IPAddress subnet = subnetString.toAddress();
boolean isContained = subnet.contains(addr); //true in this case
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Вернуть ip-address широковещательный адрес для network данной подсети
String subnet = "127.0.0.0/28";
IPAddressString subnetString = new IPAddressString(subnet);
try {
IPAddress subnet = subnetString.toAddress();
IPAddress broadcastAddr = subnet.getHighest();
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Вернуть список java адресов для подсети по порядку
String subnet = "127.0.0.0/28";
IPAddressString subnetString = new IPAddressString(subnet);
try {
IPAddress subnet = subnetString.toAddress();
for(IPAddress addr : subnet) {
...
}
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Сортировать .java список адресов
List addrs;
Collections.sort(addrs); //IPAddressString implements Comparable
Получить набор networks подсетевых сетей и список j2se адресов (ответ Ахмед Ране):
IPAddress subnet = new IPAddressString("192.168.0.0/28").getAddress();
IPAddress newSubnets = subnet.adjustPrefixLength(1, false);
System.out.println(newSubnets); //192.168.0.0-8/29
HashSet subnetSet = new HashSet();
ArrayList addrList = new ArrayList();
for(IPAddress addr : newSubnets.getIterable()) {
subnetSet.add(addr.toPrefixBlock());
addrList.add(addr);
}
System.out.println(subnetSet);//[192.168.0.0/29, 192.168.0.8/29]
System.out.println(addrList);
//[192.168.0.0/29, 192.168.0.1/29, 192.168.0.2/29,
//192.168.0.3/29, 192.168.0.4/29, 192.168.0.5/29,
//192.168.0.6/29, 192.168.0.7/29, 192.168.0.8/29,
//192.168.0.9/29, 192.168.0.10/29, 192.168.0.11/29,
//192.168.0.12/29, 192.168.0.13/29, 192.168.0.14/29,
//192.168.0.15/29]
Адресов j2se может быть много. Более эффективный networks способ получить новый список java-api подсетей - использовать итератор openjdk блока префиксов, который java-libraries выполняет итерацию по подсетям jre блока префиксов, как показано:
IPAddress subnet = new IPAddressString("192.168.0.0/28").getAddress();
IPAddress newSubnets = subnet.adjustPrefixLength(1, false);
System.out.println(newSubnets); // 192.168.0.0-8/29
Iterator extends IPAddress> iterator = newSubnets.prefixBlockIterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// 192.168.0.0/29
// 192.168.0.8/29
java
networking
ip-address
Сетевые расчеты и проверка IPv4 / IPv6 для Java?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.