studio publica obtener dirección direccion con cliente capturar java ip-address

publica - obtener ip de mi pc con java



Calcule si una dirección IP está en un rango específico en Java (1)

Quiero poder devolver verdadero / falso dependiendo de que una IP esté dentro del rango de otras dos IP.

Por ejemplo:

ip 192.200.3.0

range from 192.200.0.0

range to 192.255.0.0

debe resultar a la verdad.

Otros ejemplos:

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


La forma más fácil de verificar el rango es probablemente convertir las direcciones IP en enteros de 32 bits y luego comparar los enteros.

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

En lugar de InetAddress.getByName() , es posible que desee consultar la biblioteca de Guava que tiene una clase de ayuda InetAddresses que evita la posibilidad de búsquedas de DNS.