gpt4 book ai didi

java - 从给定的 IP 地址和子网掩码获取所有 IP 地址

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:24 27 4
gpt4 key购买 nike

在 Java 中,我需要获取给定 IP 网络包含的所有 IP 地址的列表。

例如让网络为:192.168.5.0/24 那么输出将为 (192.168.5.0 ... 192.168.5.255)。

我可以想到下面的方法,但它看起来很脏,有什么优雅的方法吗? InetAddress 中没有相同的功能类。

  1. 从输入的 IP 和子网掩码中获取网络 Ip。

    mask = (long)(0xffffffff) << (32-subnetMask);
    Long netIp = getLongfromIp(Inputip)& mask;

函数“getLongfromIp”包含来自 - How to convert string (IP numbers) to Integer in Java 的代码

  1. 通过子网掩码获取主机数

    maxRange = (long)0x1<<(32-subnetMask);

  2. 通过添加 i for i in (0 .. maxRange) 获取所有希望的地址在网络中

  3. 将上述步骤中的 ip 转换为八位字节字符串。

Ps:我确定 IP 地址将仅在 IPV4 中。

最佳答案

回答我自己的问题,解决方案是使用 Apache commons.net

import org.apache.commons.net.util.*;

SubnetUtils utils = new SubnetUtils("192.168.1.0/24");
String[] allIps = utils.getInfo().getAllAddresses();
//appIps will contain all the ip address in the subnet

阅读更多:Class SubnetUtils.SubnetInfo

关于java - 从给定的 IP 地址和子网掩码获取所有 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com