Aquí está el escenario ... Tengo una tabla de subredes. (ver más abajo) Tengo una dirección IP. Me gustaría saber a qué subred pertenece la dirección IP en función de una búsqueda en la tabla. Esta asociación se usará para determinar en qué ubicación se encuentra el usuario. Es un espacio de red privado, por lo que no se aplicarán las búsquedas estándares de internet para la ubicación. ¿Cuál sería el mejor enfoque? ¿Tendría que dividir la dirección IP en sus partes numéricas y en una comparación bit a bit de todas las subredes? O ¿hay herramientas incorporadas en la API de Java que podrían facilitar mi vida al comparar la dirección IP con la máscara de subred?Coincidencia de una dirección IP con una tabla de máscaras de subred ... ¿Cuál es el mejor enfoque en Java?
Estoy buscando la mejor manera de comparar ipaddress a una máscara de subred determinada y determinar si esto coincide, o no, no. Opcionalmente. También se agradecerá cualquier consejo sobre cómo almacenar la lista y buscar con operaciones mínimas.
Lo ideal sería que estaría haciendo algo similar a esto:
List subnetInfo = null;
subnetInfo = findSubnet('192.168.0.1'); //value null if nothing found
....
//return null if nothing found
List findSubnet(String ipaddress) {
List subnetDetails = null;
.... code here ...
return subnetDetails;
}
Tabla 1: Muestra la lista de subredes
dk-ballerup-gen-off-v411 10.172.80.0/21 NANR-denmark-ballerup-metallbuen66-ground-first-floors-incl-dhcp-(sr14585203)
ae-dubai-ofssl-gen-off-v410 10.172.88.0/24 NANR-arab-emirates-ofssl-iflex-general-office-v410-(sr12781477)
ru-stpetersburg-gen-off-v411 10.172.89.0/24 NANR-russia-stpetersburg-general-office-incl-dhcp (bsteinba)
¿Por qué necesitarías una API para algo que puedas consultar con el operador &? ... por lo que las máscaras de red se * llaman * máscaras de red ... – EJP
Porque convertir una máscara CIDR en un número es el tipo de tarea que se puede equivocar fácilmente. ¿Por qué volver a implementarlo, cuando puede sacarlo de la estantería? – skaffman
Estás bromeando, ¿verdad? Ni siquiera tiene que convertir los bytes en un entero, solo puede enmascarar los bytes en un bucle. Alrededor de 4 líneas de código. – EJP