繁体   English   中英

如何从 Java 中的 IPv6 子网获取所有 IP?

[英]How to get all IP's from a IPv6 Subnet in Java?

我正在使用“java-ipv6-0.17”jar 在 Java 中实现 IPv6 支持?

我使用下面的代码获得了开始范围和结束范围,但我需要给定子网中的所有 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

任何人都可以帮忙并提供代码片段吗?

这是一个非常糟糕的主意要做到这一点,因为作为评论说,你不可能存储所有的地址,但作为一个学习的经验,你可以遍历一系列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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM