2016-03-14 8 views
-1

Я пытаюсь вычислить последний IP adddress из CIDR с использованием Apache Commons-сеть для IPV4Как calcuate последний IP-адрес из CIDR в IPV6

SubnetUtils su = new SubnetUtils(cidr); 
SubnetInfo si = su.getInfo(); 
si.getHighAddress(); 

Это не будет работать на IPV6, может кто-нибудь предложить некоторые библиотеки для решения этой проблемы?

+0

«_Questions просят нас рекомендовать или найти книгу, инструмент, программное обеспечение библиотека, учебное пособие или другой ресурс вне сайта не относятся к теме для переполнения стека, поскольку они, как правило, привлекают упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. –

ответ

1

Как правило, подсеть IPv6 будет /64 (для этого существует очень мало исключений, и другие размеры подсети могут нарушать вещи). Поскольку IPv6 даже не имеет концепции вещания, последний адрес в подсети будет иметь ffff:ffff:ffff:ffff в качестве последних 64 бит. IPv6 также может использовать первый (0000:0000:0000:0000) адрес в подсети. Это делает его намного проще, чем IPv4, поскольку каждый адрес в подсети является допустимым адресом.

1

The IPAddress Java library может делать то, что вы здесь описываете.

Для любой данной строки CIDR, является ли IPv4, такие как 1.2.3.4/16 или IPv6, такие как 1: 2: 3: 4 ::/64, вы можете сделать следующее:

IPAddressString string = new IPAddressString("1:2:3:4::/64"); 
IPAddress subnet = string.getAddress(); 
IPAddress highest = subnet.getHighest(); 
String highestString = highest.toCanonicalString(); 
System.out.println(highestString); 

Для 1: 2: 3: 4 ::/64, выведенный выше код равен 1: 2: 3: 4: ffff: ffff: ffff: ffff

 Смежные вопросы

  • Нет связанных вопросов^_^