【问题标题】:A good Java library for network math [closed]一个很好的网络数学Java库[关闭]
【发布时间】:2008-10-20 22:01:35
【问题描述】:

我正在寻找一个面向网络数学并且已经过测试的 Java 库。没有什么特别花哨的东西,只是保存 ips 和子网,并执行诸如打印子网掩码或计算 IP 是否在给定子网内之类的事情。

我应该自己推出,还是已经有一个强大的库来解决这个问题?

【问题讨论】:

    标签: java math networking


    【解决方案1】:

    我们自己开发了一个 Java IPv4 算术库。 在这里看到它:http://tufar.com/ipcalculator/ 它在 BSD 许可下。

    【讨论】:

      【解决方案2】:

      org.apache.lenya.ac.IPRange 似乎具有这些功能。

      Apache Lenya 项目是一个开源内容管理系统。它使用 Apache 许可证,因此您可以仅重用您需要的代码。 (但一如既往,请自己阅读license;不要相信互联网上某些人的法律建议!:-)

      【讨论】:

      • org.apache.lenya.ac.IPRange 当然可以修改以满足我的需要,感谢您的回复。也就是说,我希望找到更通用的东西,比如与 Perl 的 IP::NetAddr 等效的 Java。
      【解决方案3】:

      open-source IPAddress Java library 可以进行 ip 地址操作,例如与 ipv4/ipv6 的转换和子网检查。免责声明:我是项目经理。

      它处理各种网络数学运算,例如掩码、按位或、设置前缀长度、将地址切换到前缀块、迭代子网、检查包含、替换地址段、反转地址、计算子网交集、减去一个子网另一个,还有其他。

      下面是一些用于测试 ipv6 地址是否在给定子网中的示例代码:

          String ipv6 = "2001:db8:57AB:0000:0000:0000:0000:0001";
          String ipv6subnet = "2001:db8::/32";
          String ipv4 = "1.2.3.4";
          try {
              IPAddressString ipv6addrstr = new IPAddressString(ipv6);
              IPAddressString ipv6addrsubnetstr = new IPAddressString(ipv6subnet);
              IPAddressString ipv4addrstr = new IPAddressString(ipv4);
      
              IPAddress ipv6addr = ipv6addrstr.toAddress();
              IPAddress ipv6addrsubnet = ipv6addrsubnetstr.toAddress();
              IPAddress ipv4mappedaddr = ipv4addrstr.toAddress().toIPv6();
      
              System.out.println(ipv6addrsubnet + " contains " + ipv6addr + ": " + ipv6addrsubnet.contains(ipv6addr)); //
              System.out.println(ipv6addrsubnet + " contains " + ipv4mappedaddr + ": " + ipv6addrsubnet.contains(ipv4mappedaddr)); //
      
          } catch(AddressStringException e) {
              //e.getMessage has validation error
          }
      

      输出:

      2001:db8::/32 contains 2001:db8:57ab::1 is true
      2001:db8::/32 contains ::ffff:102:304 is false
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        • 2012-12-16
        • 2016-08-16
        • 2010-12-18
        • 2013-03-30
        相关资源
        最近更新 更多