Überprüfen Sie gültige IPv4-Adresse in Java
Ich bin mit der sun.net.util.IPAddressUtil
Paket, um zu überprüfen, ob die Zeichenfolge enthält eine gültige IPv4-und IPv6-Adresse hat oder nicht.
Code-Snippet ist:-
String ipv4addr="200";
if(IPAddressUtil.isIPv4LiteralAddress(ipv4addr))
{
System.out.println("valid ipv4 address");
}
else
{
System.out.println("not valid");
}
Aber für Adressen, die wie 200 und 300 es ist immer noch sagen, es ist eine gültige IPv4-Adresse, was es nicht ist.
Wenn ich das gleiche Paket überprüft und für die IPV6-Adresse verwenden :-
String ipv6addr="200";
if(IPAddressUtil.isIPv6LiteralAddress(ipv6addr))
{
System.out.println("valid ipv6 address");
}
else
{
System.out.println("not valid");
}
Bekomme ich das richtige Ergebnis. Aber IPv4 nicht zu funktionieren scheint, oder vielleicht verwende ich es falsch. Bitte führe mich. Ich will nicht von regex für IPv4-Validierung...
oracle.com/technetwork/java/faq-sun-packages-142232.html
Ja..ich ging durch diesen link...Aber ich glaube nicht, dass Sie, sofern eine neue Version für dieses Paket oder eine der oben genannten Methoden sind veraltet...ich denke, es ist besser für den apache-common-Bibliothek für diese Validierungen......Irgendwelche Vorschläge..?
mögliche Duplikate von die Validierung der IP-Adresse
Ja..ich ging durch diesen link...Aber ich glaube nicht, dass Sie, sofern eine neue Version für dieses Paket oder eine der oben genannten Methoden sind veraltet...ich denke, es ist besser für den apache-common-Bibliothek für diese Validierungen......Irgendwelche Vorschläge..?
mögliche Duplikate von die Validierung der IP-Adresse
InformationsquelleAutor AngelsandDemons | 2011-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen Grund, warum man immer ein "gültiges" Ergebnis:
200
ist eine gültige IPv4-Adresse.Sehen, an den computer, um eine IPv4-Adresse ist nur ein 32-bit-Zahl. Die Punkte sind ganz für unsere Bequemlichkeit, weil wir Menschen saugen merken-big genauen zahlen. Aber Sie müssen nicht da sein; es gibt Regeln darüber, wie eine Adresse wird analysiert, je nachdem, wie viele Teile es hat.
Wenn eine Adresse besteht aus einer Zahl, wird Sie als ein 32-bit-Zahl, und jedes byte ist 8 bit, die Zahl. Wenn Sie wurden zu analysieren
"200"
als eine IP-Adresse, es wäre äquivalent zu 0.0.0.200. Ebenso"2130706433"
wäre äquivalent zu 127.0.0.1.Gibt es auch standards für, wenn eine Adresse hat zwei Teile, die wie 0.200 (der erste Teil ist das erste byte, der zweite Teil ist ein 24-bit-Zahl darstellt, die anderen 3 bytes), und auch 0.0.200 (die ersten zwei zahlen sind bytes, der Letzte Teil ist 16 bits und nimmt die anderen 2 bytes). Die "ungewöhnliche" Formate sind überbleibsel aus den Tagen der IP-Adresse Klassen, aber fast alle software, die zum analysieren von Adressen, die Sie verstehen wird. (Wenn Sie pop öffnen Sie Ihren browser und gehen Sie zu
http://1249739112
* oder auchhttp://74.125.33128
*, zum Beispiel, Google Startseite wird kommen.)* Siehe die Kommentare für anklickbare links. Danke, "link validator". 😛
Sehen http://download.oracle.com/javase/6/docs/api/java/net/Inet4Address.html oder http://www.perlmonks.org/?node_id=221512, oder http://en.wikipedia.org/wiki/IPv4#Address_representations, für einige weitere details.
Java versteht diese Formate (wie .net, wie auch, wie jeder anständige OS), und analysiert die Adresse richtig, ob es enthält 1, 2, 3 oder 4 Teile.
Wenn Sie überprüfen möchten, dass ein Möchtegern-Adresse tatsächlich aussieht "xxx.xxx.xxx.xxx", dann werden Sie wahrscheinlich wollen, um explizit zu überprüfen, ein Muster zu verwenden, oder die Verwendung eines Validierungs-Bibliothek der Auffassung, dass 32-bit-zahlen als ungültige Adressen (obwohl Sie gültig sind). Ich würde nicht die Mühe, obwohl-wenn Sie die lookup-Funktionen zur Verfügung gestellt, können Sie akzeptieren eine Adresse in einem standard-format und es wird funktionieren.
(Dem ganzen Schlamassel, das ändert sich mit IPv6, es gibt eine viel strengere format, und man kann nicht einfach geben Sie einige 36-stellige Nummer und erwarten, dass es funktioniert. Aber die Plattform, noch weiß Sie, wie zu analysieren, eine Adresse, und Sie sollten darauf Vertrauen, es zu tun.)
Notiert. Obwohl, ehrlich gesagt, ich bezweifle stark, zu viele Menschen gehen zu versuchen, um zu überprüfen IPv6-Adressen jederzeit schnell 🙂
was nur bedeutet, dass viele Menschen sind dabei, un-bestätigt IPv6-Adressen. Sie sind kommen, und wenn Ihre software keine Unterstützung bietet, dann werden Sie hinter sich gelassen.
Ich höre "IPv6 wird kommen" für >10 Jahren. Immer noch warten. Ich kann nicht einmal IPV6 zu arbeiten, ohne eine tunnel-broker. 😛
Original-text: (Wenn Sie pop öffnen Sie Ihren browser und gehen Sie zu 1249739112 oder auch 74.125.33128, zum Beispiel, Google Startseite wird kommen.)
InformationsquelleAutor cHao
Check-out Guave ist
InetAddresses
- Klasse enthält statische utility-Methoden für die Arbeit mit IP-Adressen. (Als ich verstehen es nutzt diesun.net.util.IPAddressUtil
Klasse hinter die kulissen.)Der code in meiner Antwort nur tests IP-Adressen. Checkout diese Methode statt.
InformationsquelleAutor Kohányi Róbert
Ist es nicht eine gute Idee, die innere "Sonne" verpackt Klassen, ich würde versuchen, mit Hilfe von Apache Validator
http://commons.apache.org/validator/
die IP-Adresse Validierung.
InformationsquelleAutor MeBigFatGuy
Wenn Sie möchten, um zu überprüfen, ob ein string ein gültiges IP-Adresse Darstellung, die den source-code von org.apache.http.conn.util.InetAddressUtils verwendet diese regulären Ausdrücke:
InformationsquelleAutor grebulon
Nach einer kleinen Forschung, die ich am Ende mit etwas wie dieses
das war in Ordnung für einfache Kontrolle.
InformationsquelleAutor Johntor
String ist eine IPv4-string-format, das ursprünglich eingeführt durch die aton_inet-Dienstprogramm in BSD-Unix und Bestand bis zu diesem Tag in den verschiedenen Unix-und Linux-Aromen und anderswo.
https://linux.die.net/man/3/inet_aton
Die IP-Adresse Java-Bibliothek tun, Validierung, kann so konfiguriert werden, unterstützen aton_inet Formate oder nicht. In der javadoc steht im link. Disclaimer: ich bin der Projekt manager.
Überprüfen, ob eine Adresse gültig ist, zulassen inet_aton Stil:
Ausgabe:
gültige Adresse: 0.0.0.200
Überprüfen, ob eine Adresse gültig ist, nicht zulassen inet_aton Stil:
Ausgabe:
200 IP-Adresse Fehler: Optionen erlauben keine IPv4-Adresse mit weniger als vier Segmente
InformationsquelleAutor Sean F