Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查CIDR是否包含公共IP地址-在Java中_Java_Networking_Ip_Cidr - Fatal编程技术网

检查CIDR是否包含公共IP地址-在Java中

检查CIDR是否包含公共IP地址-在Java中,java,networking,ip,cidr,Java,Networking,Ip,Cidr,给定一个CIDR字符串,我想测试此CIDR是否包含未保留为专用地址的IP地址(即位于以下范围之一:) ,然后检查 就我个人而言,我会选择第一种方法;越短越好。我宁愿依赖一个解析器来处理IPv4地址表示法的每一个角落。,然后检查 就我个人而言,我会选择第一种方法;越短越好。我宁愿依靠一个解析器来处理IPv4地址表示法的每一个角落。最终为私有范围定义了静态CIDR块,并使用以下代码查看它是否与给定的CIDR重叠- 最后为专用范围定义静态CIDR块,并使用以下代码查看它是否与给定CIDR重叠- 我使用

给定一个CIDR字符串,我想测试此CIDR是否包含未保留为专用地址的IP地址(即位于以下范围之一:)

,然后检查

就我个人而言,我会选择第一种方法;越短越好。我宁愿依赖一个解析器来处理IPv4地址表示法的每一个角落。

,然后检查


就我个人而言,我会选择第一种方法;越短越好。我宁愿依靠一个解析器来处理IPv4地址表示法的每一个角落。

最终为私有范围定义了静态CIDR块,并使用以下代码查看它是否与给定的CIDR重叠-

最后为专用范围定义静态CIDR块,并使用以下代码查看它是否与给定CIDR重叠-

我使用CIDR已经有一段时间了,但是URI/URL类不提供这样的功能吗?如果你是手工操作的话,你可以把每个八位元看作一个数量级,然后把它们加在一起,得到一个数字:0+(0*256)+(168*(256^2))+(192*(256^3))自从我使用CIDR以来已经有一段时间了,但是URI/URL类不提供这样的功能吗?如果你是手工操作的话,你可以把每个八位元视为一个数量级,把它们加在一起得到一个数字:0+(0*256)+(168*(256^2))+(192*(256^3))
192.168.0.0 - 192.168.255.255
172.16.0.0 - 172.31.255.255
10.0.0.0 - 10.255.255.255
int slash = cidr.indexOf('/');
String ip = cidr.substring(0, slash);
InetAddress address = InetAddress.getByName(ip);
byte[] bytes = address.getAddress();
boolean privateAddress =
    (bytes[0] == 10) ||
    (bytes[0] == (byte) 172 && (bytes[1] >= 16 && bytes[1] < 32)) ||
    (bytes[0] == (byte) 192 && bytes[1] == (byte) 168);
boolean privateAddress =
    cidr.startsWith("10.") || cidr.startsWith("192.168.") ||
    cidr.matches("172\\.(1[6-9]|2[0-9]|3[01])\\..*");