Как получить все IP-адреса из подсети IPv6 в Java? - PullRequest
0 голосов
/ 05 июля 2019

Я внедряю поддержку IPv6 в Java с помощью jar-файла java-ipv6-0.17?

Я получил начальный и конечный диапазоны, используя приведенный ниже код, но мне нужны все IP-адреса в данной подсети?

import com.googlecode.ipv6.IPv6NetworkMask;

public class IP {

public static void main(String[] args) {

final IPv6Network strangeNetwork = IPv6Network.fromString("2001:0db8::/31");
System.out.println("Start Range:"+ " "+ strangeNetwork.getFirst());
System.out.println("End Range:"+ " "+ strangeNetwork.getLast() + "\n");

Вывод:

Начальный диапазон: 2001: db8 ::

Конечный диапазон: 2001: db9: ffff: ffff: ffff: ffff: ffff: ffff

Может ли кто-нибудь помочь и предоставить фрагмент кода

1 Ответ

0 голосов
/ 05 июля 2019

Это действительно плохая идея, поскольку, как говорится в комментариях, вы не можете сохранить все адреса, но в качестве опыта обучения вы можете выполнять итерацию в диапазоне IPv6Address, используя IPv6AddressRange. Поскольку IPv6AddressRange реализует Iterable, мы можем выполнить его с расширенным циклом for:

List<IPv6Address> ipList = new ArrayList<>();

IPv6AddressRange range = IPv6AddressRange.fromFirstAndLast(
  IPv6Address.fromString("2001:db8:0000:0000:0000:0000:0000:0000"), 
  IPv6Address.fromString("2001:db9:ffff:ffff:ffff:ffff:ffff:ffff"));

for (IPv6Address addr : range) {
  ipList.add(addr);
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...