Aşağıdaki sınıf içindeki isInRange methodu verilen ip'nin kurucuda verilen başlangıç ve bitiş ip'si aralığında olup olmadığını döndürmektedir. Örnek kod aşağıdaki gibidir :
public class IPRange {
private String start;
private String end;
public IPRange(String start,String end) {
setStart(start);
setEnd(end);
}
public String getStart() {
return start;
}
private int getStartASInt() {
return ipToInt(getStart());
}
public void setStart(String start) {
this.start = start;
}
public String getEnd() {
return end;
}
private int getEndASInt() {
return ipToInt(getEnd());
}
public void setEnd(String end) {
this.end = end;
}
public boolean isInRange(String aIP){
int aIpInt=ipToInt(aIP);
if(getStartASInt()<=aIpInt && aIpInt<=getEndASInt() ){
return true;
}
return false;
}
public int ipToInt(String ip){
int[] ip_parts = new int[4];
int index = 0;
for(String s : ip.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];
return final_ip;
}
public static void main(String[] args) {
IPRange range=new IPRange("141.196.0.1","141.196.255.254");
System.out.println(range.isInRange("141.196.2.100"));
System.out.println(range.isInRange("141.197.1.100"));
System.out.println(range.isInRange("141.196.255.255"));
System.out.println(range.isInRange("141.196.255.1"));
}
}
Karşılaştırmadan önce ipToInt fonksiyonu IP'den sayı oluşturmaktadır. Sayıya çevirdikten sonra aralık içinde olup olmadığı kontrol edilmektedir. main içinde örnek kullanımı bulunmaktadır.