Jan*_*n H 13 java ipv4 ipv6 subnet
我可以用什么库来检查IP地址是否在给定的子网中?我可以找到像Apache Commons SubnetUtils(SubnetUtils.SubnetInfo.isInRange)这样的库,但是许多库还不支持IPv6.
edazdarevic的CIDRUtils支持IPv4和IPv6.该示例未提及boolean isInRange(String ipAddress),但它已实现!
另一种选择是java-ipv6,但它不支持IPv4并且需要JDK7.
使用Spring的IpAddressMatcher.与Apache Commons Net不同,它支持ipv4和ipv6.
import org.springframework.security.web.util.matcher.IpAddressMatcher;
...
private void checkIpMatch() {
matches("192.168.2.1", "192.168.2.1"); // true
matches("192.168.2.1", "192.168.2.0/32"); // false
matches("192.168.2.5", "192.168.2.0/24"); // true
matches("92.168.2.1", "fe80:0:0:0:0:0:c0a8:1/120"); // false
matches("fe80:0:0:0:0:0:c0a8:11", "fe80:0:0:0:0:0:c0a8:1/120"); // true
matches("fe80:0:0:0:0:0:c0a8:11", "fe80:0:0:0:0:0:c0a8:1/128"); // false
matches("fe80:0:0:0:0:0:c0a8:11", "192.168.2.0/32"); // false
}
private boolean matches(String ip, String subnet) {
IpAddressMatcher ipAddressMatcher = new IpAddressMatcher(subnet);
return ipAddressMatcher.matches(ip);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14160 次 |
| 最近记录: |