如何验证配置的ip是否在配置的ip范围内

时间:2012-12-03 17:34:13

标签: java

Range of Ip = 10.18.2.0 to 10.18.54.42
Configured Ip = 10.18.54.40

我应该检查10.18.54.4010.18.2.0之间的IP 10.18.54.42 代码应该返回true,因为我的ip位于范围之间。

2 个答案:

答案 0 :(得分:0)

步骤1)使用byte[]

获取所有IP地址的InetAddress

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

步骤3)ip1<配置< ip2

你去......

答案 1 :(得分: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)