【问题标题】:How to get all IP's from a IPv6 Subnet in Java?如何从 Java 中的 IPv6 子网获取所有 IP?
【发布时间】:2019-07-05 07:29:27
【问题描述】:

我正在使用“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

谁能帮忙提供一下代码 sn-p 吗?

【问题讨论】:

  • 那是... 2^96 个地址。你几乎肯定不想全部“得到”它们。

标签: java ipv6


【解决方案1】:

这样做是一个非常糟糕的主意,因为正如 cmets 所说,您不可能存储所有地址,但作为一种学习经验,您可以使用 IPv6AddressRange 遍历 IPv6Address 的范围。由于 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);
}

【讨论】:

    猜你喜欢
    • 2017-05-06
    • 2015-02-11
    • 2013-02-06
    • 1970-01-01
    • 2020-12-17
    • 2015-02-23
    • 2016-02-19
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多