一个很好的网络数学Java库
我正在寻找一个面向网络数学并且已经过测试的Java库。没有什么特别的新奇,只是用来保存IP和子网,并可以打印子网掩码或计算IP是否在给定子网内 我应该自己滚动,还是已经有了一个强大的库来实现这一点?似乎有这些功能一个很好的网络数学Java库,java,math,networking,Java,Math,Networking,我正在寻找一个面向网络数学并且已经过测试的Java库。没有什么特别的新奇,只是用来保存IP和子网,并可以打印子网掩码或计算IP是否在给定子网内 我应该自己滚动,还是已经有了一个强大的库来实现这一点?似乎有这些功能 ApacheLenya项目是一个开源内容管理系统。它使用Apache许可证,因此您可以重用所需的代码。(但和往常一样,请自己阅读;不要相信互联网上某个人的法律建议!-)我们自己开发了一个Java IPv4算术库。 请看这里: 它是在BSD许可下的 可以执行ip地址操作,例如与ipv4/
ApacheLenya项目是一个开源内容管理系统。它使用Apache许可证,因此您可以重用所需的代码。(但和往常一样,请自己阅读;不要相信互联网上某个人的法律建议!-)我们自己开发了一个Java IPv4算术库。 请看这里: 它是在BSD许可下的 可以执行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
org.apache.lenya.ac.IPRange当然可以修改以满足我的需要,感谢您的回复。也就是说,我希望找到更通用的东西,比如与Perl的IP::NetAddress相当的Java。