Le open-source IPAddress Java library peut effectuer des manipulations d'adresse IP telles que la conversion de/vers ipv4/ipv6 et la vérification de sous-réseau. Disclaimer: Je suis le chef de projet.
Il gère diverses opérations mathématiques de réseau, tels que le masquage, au niveau du bit ou, réglage des longueurs de préfixes, l'adresse du commutateur de bloc de préfixe, itérer à travers un sous-réseau, la vérification de confinement, en remplacement de segments d'adresse, les adresses de recul, calculer l'intersection de sous-réseau, en soustrayant un sous-réseau d'un autre et d'autres.
Voici quelques exemples de code pour tester si une adresse ipv6 est dans un sous-réseau donné:
String ipv6 = "2001:db8:57AB:0000:0000:0000:0000:0001";
String ipv6subnet = "2001:db8::/32";
String ipv4 = "1.2.3.4";
try {
IPAddressString ipv6addrstr = new IPAddressString(ipv6);
IPAddressString ipv6addrsubnetstr = new IPAddressString(ipv6subnet);
IPAddressString ipv4addrstr = new IPAddressString(ipv4);
IPAddress ipv6addr = ipv6addrstr.toAddress();
IPAddress ipv6addrsubnet = ipv6addrsubnetstr.toAddress();
IPAddress ipv4mappedaddr = ipv4addrstr.toAddress().toIPv6();
System.out.println(ipv6addrsubnet + " contains " + ipv6addr + ": " + ipv6addrsubnet.contains(ipv6addr)); //
System.out.println(ipv6addrsubnet + " contains " + ipv4mappedaddr + ": " + ipv6addrsubnet.contains(ipv4mappedaddr)); //
} catch(AddressStringException e) {
//e.getMessage has validation error
}
sortie:
2001:db8::/32 contains 2001:db8:57ab::1 is true
2001:db8::/32 contains ::ffff:102:304 is false
org.apache.lenya.ac.IPRange peut certainement être modifié pour répondre à mes besoins, merci pour la réponse. Cela dit, j'espérais trouver quelque chose de plus général, comme un Java équivalent à IP :: NetAddr de Perl. – perilandmishap