2013-06-10 8 views

Antwort

8

edazdarevic's CIDRUtils unterstützt sowohl IPv4 als auch IPv6. Das Beispiel erwähnt Boolean isInRange (String ipAddress) nicht, aber es ist implementiert!

Eine andere Option ist java-ipv6, aber es unterstützt nicht IPv4 und requires JDK7.

1

The IPAddress Java library unterstützt sowohl IPv4 als auch IPv6 in einer polymorphen Weise und unterstützt Subnetze, einschließlich Methoden, die die Eindämmung einer Adresse oder eines Subnetzes in einem Subnetz überprüfen. Das Javadoc ist unter dem Link verfügbar.

Hier ist sample code, die Ihr Problem löst, die identisch mit IPv4 oder IPv6 funktioniert.

1

Verwenden Sie Spring IpAddressMatcher. Im Gegensatz zu Apache Commons Net unterstützt es sowohl IPv4 als auch IPv6.

private void checkIpMatch() { 
    matches("192.168.2.1", "192.168.2.1"); // true 
    matches("192.168.2.1", "192.168.2.0/32"); // false 
    matches("192.168.2.5", "192.168.2.0/24"); // true 
    matches("92.168.2.1", "fe80:0:0:0:0:0:c0a8:1/120"); // false 
    matches("fe80:0:0:0:0:0:c0a8:11", "fe80:0:0:0:0:0:c0a8:1/120"); // true 
    matches("fe80:0:0:0:0:0:c0a8:11", "fe80:0:0:0:0:0:c0a8:1/128"); // false 
    matches("fe80:0:0:0:0:0:c0a8:11", "192.168.2.0/32"); // false 
} 

private boolean matches(String ip, String subnet) { 
    IpAddressMatcher ipAddressMatcher = new IpAddressMatcher(subnet); 
    return ipAddressMatcher.matches(ip); 
} 

Hint: Auch wenn Sie nicht Frühling verwenden und Sie brauchen eine schnelle leichte Lösung, Sie immer noch diese Klasse mit sehr wenig Änderungen verwenden können (Entfernen der Schnittstelle) an die source code. (Obwohl dieser Ansatz nicht für ernsthafte Projekte empfohlen und/oder wenn Sie zu verletzen ihre license!)

1

commons-ip-math unterstützt sowohl IPv4 als auch IPv6-Adressen. Hier ist, wie Sie überprüfen können, ob eine IP-Adresse in einem bestimmten Subnetz:

Ipv4Range.parse("192.168.0.0/24").contains(Ipv4.parse("10.0.0.1")) 
// false 

Ipv6Range.parse("2001:db8::/32").contains(Ipv6.parse("2001:db8::4")) 
// true 

(Haftungsausschluss, ich bin einer der Maintainer von commons-ip-math)

Verwandte Themen