一个好的网络数学Java库

一个好的网络数学Java库

问题描述:

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

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

我们自己开发了一个Java IPv4算法库。 请看这里:http://tufar.com/ipcalculator/ 它是根据BSD许可证。

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

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

+0

org.apache.lenya.ac.IPRange当然可以进行修改,以满足我的需求,谢谢你的回应。也就是说,我希望能找到更通用的东西,比如Perl的IP :: NetAddr。 – perilandmishap 2008-10-23 18:43:29

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