The IPAddress Java library soporta IPv4 e IPv6 de forma polimórfica incluyendo subredes. El javadoc está disponible en el enlace. Descargo de responsabilidad: soy el gerente del proyecto.
Todos los casos de uso enumerados son compatibles tanto para IPv4 como para Ipv6 de forma transparente. En otras palabras, difiere de la mayoría de las otras utilidades en el sentido de que el siguiente código funciona de forma idéntica con IPv4 o IPv6 como cadenas de entrada.
comprobar si una dirección es válida
String str = "::1";
IPAddressString addrString = new IPAddressString(str);
try {
IPAddress addr = addrString.toAddress();
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
retorno si la dirección está contenida dentro de una subred
String str = "1::1";
String subnetStr = "1::/64";
IPAddressString addrString = new IPAddressString(str);
IPAddressString subnetString = new IPAddressString(subnetStr);
try {
IPAddress addr = addrString.toAddress();
IPAddress subnet = subnetString.toAddress();
boolean isContained = subnet.contains(addr); //true in this case
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Volver la dirección de difusión para una subred determinada
String subnet = "127.0.0.0/28";
IPAddressString subnetString = new IPAddressString(subnet);
try {
IPAddress subnet = subnetString.toAddress();
IPAddress broadcastAddr = subnet.getHighest();
...
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
devolver una lista de direcciones para una subred en orden
String subnet = "127.0.0.0/28";
IPAddressString subnetString = new IPAddressString(subnet);
try {
IPAddress subnet = subnetString.toAddress();
for(IPAddress addr : subnet) {
...
}
} catch(IPAddressStringException e) {
//e.getMessage provides validation issue
}
Ordenar una lista de direcciones
List<IPAddressString> addrs;
Collections.sort(addrs); //IPAddressString implements Comparable
Consiga el sistema de redes con subredes y lista de direcciones (de respuesta a AhmedRana):
IPAddress subnet = new IPAddressString("192.168.0.0/28").getAddress();
IPAddress newSubnets = subnet.setPrefixLength(subnet.getPrefixLength() + 1, false);
System.out.println(newSubnets); //192.168.0.0-8/29
HashSet<IPAddress> subnetSet = new HashSet<IPAddress>();
ArrayList<IPAddress> addrList = new ArrayList<IPAddress>();
for(IPAddress addr : newSubnets.getIterable()) {
subnetSet.add(addr.toPrefixBlock());
addrList.add(addr);
}
System.out.println(subnetSet);//[192.168.0.0/29, 192.168.0.8/29]
System.out.println(addrList);
//[192.168.0.0/29, 192.168.0.1/29, 192.168.0.2/29,
//192.168.0.3/29, 192.168.0.4/29, 192.168.0.5/29,
//192.168.0.6/29, 192.168.0.7/29, 192.168.0.8/29,
//192.168.0.9/29, 192.168.0.10/29, 192.168.0.11/29,
//192.168.0.12/29, 192.168.0.13/29, 192.168.0.14/29,
//192.168.0.15/29]
Gracias por publicar su respuesta! Asegúrese de leer detenidamente [Preguntas frecuentes sobre autopromoción] (http://stackoverflow.com/faq#promotion). También tenga en cuenta que * se requiere * que publique una exención de responsabilidad cada vez que se vincula a su propio sitio/producto. –
@AndrewBarber Gracias. No estaba enterado de esto. Solo estaba tratando de ayudar a otros que podrían tener el mismo problema que yo. De todos modos, voy a un descargo de responsabilidad. –