2010-11-23 52 views

答えて

57

範囲をチェックする最も簡単な方法は、32ビット整数にIPアドレスを変換してからちょうど整数を比較することが考えられます。

public class Example { 
    public static long ipToLong(InetAddress ip) { 
     byte[] octets = ip.getAddress(); 
     long result = 0; 
     for (byte octet : octets) { 
      result <<= 8; 
      result |= octet & 0xff; 
     } 
     return result; 
    } 

    public static void main(String[] args) throws UnknownHostException { 
     long ipLo = ipToLong(InetAddress.getByName("192.200.0.0")); 
     long ipHi = ipToLong(InetAddress.getByName("192.255.0.0")); 
     long ipToTest = ipToLong(InetAddress.getByName("192.200.3.0")); 

     System.out.println(ipToTest >= ipLo && ipToTest <= ipHi); 
    } 
} 

むしろよりInetAddress.getByName()、あなたはDNSルックアップの可能性を回避するInetAddressesヘルパークラスを持っているグアバライブラリを見てみたいことがあります。

+0

ありがとう、私はこれを試してみます –

+0

これは素晴らしい仕事。ありがとう! –

+0

これは非常に役に立ちました。ありがとうございます。 – NitayArt

関連する問題