0
Range of Ip = 10.18.2.0 to 10.18.54.42
Configured Ip = 10.18.54.40

我应该检查 ip10.18.54.40介于10.18.2.0to 10.18.54.42 Code 应该返回 true 因为我的 ip 介于范围之间。

4

2 回答 2

0

您还没有在示例中提到 IP 地址是如何存储的,如果它已经是一个整数,您可以直接比较:

if(lowIP <= currentIP && currentIP <= highIP) { .... } 

如果它保存在String变量中,则必须将其拆分为整数部分并将它们组合成一个 4 字节整数。

String ip_addr  = .... ;
int[] ip_parts  = new int[4]; 
int index = 0;

for(String s : ip_addr.split(".")) {
   ip_parts[index++] = Integer.parseInt(s);
}

int final_ip = ip_parts[0] << 24 | ip_parts[1] << 16 | ip_parts[2] << 8 | ip_parts[3] 

例子:

ip    = "192.168.0.1"
parts = [192,      168,       0, 1]               (base 10)
      = [1100000,  10100000,  00000000, 00000001] (base 2)

final_ip = 1100000 10100000 00000000 00000001 (base 2)
         = 3231711232                         (base 10)
于 2012-12-03T17:54:00.443 回答
0

步骤 1)byte[]使用获取所有 IP 地址InetAddress

步骤 2) 将所有 byte[] 转换为long

步骤 3) ip1 < 已配置 < ip2

给你...

于 2012-12-03T17:41:42.403 回答