Question: I want to be able to return true/false depending on an IP being in range of two other IPs.

For instance:

`ip 192.200.3.0`

`range from 192.200.0.0`

`range to 192.255.0.0` 

should result to true.

Other examples:

```
assert 192.200.1.0 == true
assert 192.199.1.1 == false
assert 197.200.1.0 == false

```

Answer: 
The easiest way to check the range is probably to convert the IP addresses to 32-bit integers and then just compare the integers.

```
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);
    }
}

```

Rather than `InetAddress.getByName()`, you may want to look at the Guava library which has an [InetAddresses](http://google.github.io/guava/releases/25.0-jre/api/docs/com/google/common/net/InetAddresses.html) helper class that avoids the possibility of DNS lookups.
If you are using <https://github.com/seancfoley/IPAddress> and have an IP address and a range you can do the following:

```

public boolean contains(String network, String address) {
    return new IPAddressString(network).contains(new IPAddressString(address));
}

contains("10.10.20.0/30", "10.10.20.3");

```