Mit welcher Bibliothek kann ich überprüfen, ob sich eine IP-Adresse in einem bestimmten Subnetz befindet? Ich könnte Bibliotheken wie die Apache Commons SubnetUtils (SubnetUtils.SubnetInfo.isInRange) finden, aber viele unterstützen IPv6 noch nicht.Java-Bibliothek, um zu prüfen, ob sich die IPv4- oder IPv6-Adresse in einem bestimmten Subnetz befindet
Antwort
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.
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.
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!)
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)
- 1. Prüfen, ob sich die Funktion in einem rekursiven Funktionsaufruf befindet
- 2. So überprüfen Sie, ob sich eine IP-Adresse in einem bestimmten Subnetz befindet
- 3. Optimal prüfen, ob IP im Subnetz ist
- 4. Prüfen, ob sich ein Widget im Layout befindet Qt
- 5. Wie überprüfe ich, ob sich eine Datei in PowerShell in einem bestimmten Verzeichnis befindet?
- 6. Prüfen, ob sich ein Marker im aktuellen sichtbaren Bereich befindet
- 7. Überprüfen Sie, ob sich die Datei im (Unter) Verzeichnis befindet
- 8. Wie kann man prüfen, ob sich ein Punkt in einem Ellipsoid befindet?
- 9. SSIS Script-Task, um zu prüfen, ob die Datei im Ordner vorhanden ist oder nicht
- 10. Ermitteln, ob sich ein Objekt in einem std :: set befindet
- 11. Prüfen, ob sich ein Berührungspunkt in der Box Collider in Unity befindet
- 12. Wo befindet sich \ n in einem String?
- 13. JUnit Testfall, um zu prüfen, ob die Datei erstellt wurde
- 14. Prüfen, ob ein Typ aus einem bestimmten Namensraum stammt
- 15. Prüfen, ob die Maus auf ein UI-Element mit einem bestimmten Namen oder Tag geklickt hat?
- 16. Prüfen ob zwei Objekte sich gegenüber stehen
- 17. Überprüfen Sie, ob ein Win32-Thread ausgeführt wird oder sich in einem angehaltenen Zustand befindet
- 18. Prüfen, ob mobile oder tragbare
- 19. Abfrage, um zu prüfen, ob viele-zu-viele-Beziehung existiert
- 20. überprüfen Sie, ob IP in Subnetz
- 21. Wie zeige ich dem Benutzer einen bestimmten Text nur an, wenn er sich in einem bestimmten Ort oder Radius befindet?
- 22. Überprüfen Sie, ob sich ein Punkt in einem gedrehten Rechteck befindet (C#)
- 23. Überprüfen, ob sich ein Postfach in einer bestimmten Datenbank befindet (Syntaxfehler!)
- 24. Regex, um zu prüfen, ob die Zeichenfolge beginnt, und die Groß-/Kleinschreibung ignoriert
- 25. Prüfen, ob URL zu einer Datei oder einer Seite führt
- 26. Methode zu prüfen, ob capslock oder nicht in Java ist
- 27. Prüfen, ob die Variable String oder Array in Zweig ist
- 28. Überprüfen Sie, ob sich jedes Element in einem numplien Array in einem anderen Array befindet
- 29. Excel/VBA, um zu prüfen, ob eine Zeile existiert
- 30. Objekte abstoßen, wenn sich die Maus in der Nähe befindet
Commons Net Feature Anfrage Stimme für: https://issues.apache.org/jira/browse/NET-405 – Vadzim