首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache-commons非法(但合法) CIDR符号

Apache-commons非法(但合法) CIDR符号
EN

Stack Overflow用户
提问于 2014-07-24 02:02:33
回答 1查看 415关注 0票数 0

我需要在Java中使用CIDR符号的能力。

我找到了公共图书馆SubnetUtils。

当我尝试使用CIDR为10.10.0.0/22时,作为一个例子,我得到以下信息

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Could not parse [10.10.0.0] at org.apache.commons.net.util.SubnetUtils.calculate(SubnetUtils.java:240) at org.apache.commons.net.util.SubnetUtils.<init>(SubnetUtils.java:52)

调用的代码是:

SubnetUtils subnetUtils = new SubnetUtils(cidrNotation); SubnetInfo info = subnetUtils.getInfo();

我看到SubnetUtils正在检查比特,以确定掩码是否有效。

`来自SubnetUtils.java

代码语言:javascript
复制
 private void calculate(String mask) {
    Matcher matcher = cidrPattern.matcher(mask);

    if (matcher.matches()) {
        address = matchAddress(matcher);

        /* Create a binary netmask from the number of bits specification /x */
        int cidrPart = rangeCheck(Integer.parseInt(matcher.group(5)), 0, NBITS);
        for (int j = 0; j < cidrPart; ++j) {
            netmask |= (1 << 31-j);
        }

        /* Calculate base network address */
        network = (address & netmask);

        /* Calculate broadcast address */
        broadcast = network | ~(netmask);
    } else {
        throw new IllegalArgumentException("Could not parse [" + mask + "]");
    }

`

我知道10.0.0.0/8是A类,但我应该可以合法地把它切成小块。

有办法绕道吗?更好的效用?还是我被困在重写SubnetUtils上了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 03:49:11

我继续调查,结果发现在递归过程中,我丢失了CIDR上的面具。第一批传球是正常的,然后在异常路径中丢失。该实用程序按预期工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24923960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档