一个很好的网络数学Java库

时间:2008-10-20 22:01:35

标签: java math networking

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

我应该自己动手,还是已经有一个强大的库?

3 个答案:

答案 0 :(得分:5)

我们自己开发了一个Java IPv4算术库。 在此处查看:http://tufar.com/ipcalculator/ 它是BSD许可证。

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

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

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

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

line    item    order_quantity  intial_stock    Remaining_Stock
1       123     5               10              5
2       123     3               10              2
3       123     1               10              1
4       234     5               15              10
5       234     3               15              7
6       234     1               15              6

输出:

    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
    }