Ich habe eine Bibliothek erstellt, die prüft, ob die Zeichenfolge im IPv4-Format vorliegt, und sie in Inet4Address konvertiert. Außerdem sind Zeichenfolgen im IPv4-Format mit höheren Zahlen und Symbolen (z. B. 192.168.1.1) zulässig.
Ursprünglich wurde es mit einer einfachen Methode unter Verwendung von Inet4Address.getByName () beurteilt, aber ich habe eine Bibliothek erstellt, weil ein Problem mit einer bestimmten Spezifikation (am Ende aufgeführt) von getByName aufgetreten ist.
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.regex.Pattern;
/**IPv4-Dienstprogrammklasse*/
public abstract class Ipv4AddressUtil {
/**Maximale Anzahl von Oktetten*/
private static final int OCTETS_LENTGH = 4;
/**Maximale Anzahl von Oktettwerten*/
private static final int MAX_OCTET_VALUE = 255;
/**Minimaler Oktettwert*/
private static final int MIN_OCTET_VALUE = 0;
/**IPv4-Muster*/
private static final Pattern V4_FORMAT = Pattern
.compile("((([01]?\\d{1,2})|(2[0-4]\\d)|(25[0-5]))\\.){3}(([01]?\\d{1,2})|(2[0-4]\\d)|(25[0-5]))");
/**
*Legt fest, ob die angegebene Zeichenfolge im Format IP-Adresse v4 vorliegt.
*In den folgenden Fällen wird es als IP-Adresse v4-Format betrachtet.
*- Bestehend aus 4 Zahlenreihen mit Punkten als Begrenzer.
*・ Zahlen sind Werte mit 3 oder weniger Ziffern im Bereich von 0 bis 255.(Keine Polsterung erlaubt)。
*
* @param v Beurteilungszeichenfolge
* @Rückgabe true für das Format der IP-Adresse v4
*/
public static boolean isIpv4Address(String v) {
return isIpv4Address(v, true);
}
/**
*Legt fest, ob die angegebene Zeichenfolge im Format IP-Adresse v4 vorliegt.
*In den folgenden Fällen wird es als IP-Adresse v4-Format betrachtet.
*- Bestehend aus 4 Zahlenreihen mit Punkten als Begrenzer.
*・ Zahlen sind Werte mit 3 oder weniger Ziffern im Bereich von 0 bis 255.(Keine Polsterung erlaubt)。
*
* @param v Beurteilungszeichenfolge
* @param allowEm Ermöglicht den vollen Winkel.
* @Rückgabe true für das Format der IP-Adresse v4
*/
public static boolean isIpv4Address(String v, boolean allowEm) {
if (v == null || v.isEmpty()) {
return false;
}
if (allowEm) {
String[] octets = v.toLowerCase().replaceAll(".", ".").split("\\.");
if (octets.length != OCTETS_LENTGH) {
return false;
}
for (String octet : octets) {
try {
int b = Integer.parseInt(octet);
if (b < MIN_OCTET_VALUE || MAX_OCTET_VALUE < b)
return false;
} catch (NumberFormatException e) {
return false;
}
}
return true;
} else {
return V4_FORMAT.matcher(v).matches();
}
}
/**
*Analysiert die angegebene Zeichenfolge als Inet4Address.
* @param v Zu analysierende Zeichenfolge
* @param allowEm Ermöglicht den vollen Winkel.
* @Inet4Address wird durch das Argument der Rückgabezeichenfolge dargestellt
* @löst eine IllegalArgumentException aus, wenn die Zeichenfolge nicht im Format IP-Adresse v4 vorliegt
*/
public static Inet4Address parseInet4Address(String v, boolean allowEm) throws IllegalArgumentException {
if (!isIpv4Address(v, allowEm))
throw new IllegalArgumentException("Die zu analysierende Zeichenfolge hat nicht das Format IP-Adresse v4.");
Inet4Address returnvalue = null;
try {
returnvalue = (Inet4Address) Inet4Address.getByName(v.toLowerCase().replaceAll(".", "."));
} catch (UnknownHostException e) {} //UnknownHostException tritt nicht auf, da das Format der IP-Adresse v4 bestätigt wurde.
return returnvalue;
}
}
Es wird auf dem Code von Herrn Uepan basieren. Vielen Dank.
[Java] [Beispielcode] Überprüfen Sie, ob es sich um ein IP-Adressformat handelt. - Ich werde den Java-Beispielcode http://javasampleokiba.blog.fc2.com/blog-entry-26.html eingeben
https://paiza.io/projects/uU5C6g6Mb4RXBm1eAE4VoQ
InetAddress (Java Platform SE 6) https://docs.oracle.com/javase/jp/6/api/java/net/InetAddress.html#getByName(java.lang.String)
Der Hostname ist ein Computername wie "java.sun.com" oder eine Textdarstellung seiner IP-Adresse. Wenn eine Literal-IP-Adresse angegeben wird, wird nur die Gültigkeit des Adressformats überprüft.
Eine Spezifikation, die die Loopback-Schnittstellenadresse (localhost / 127.0.0.1) zurückgibt, wenn null oder ein leeres Zeichen angegeben wird. (Ich wünschte, ich könnte einfach eine UnknownHostException auslösen ...) Außerdem müssen alle IPv4-Zeichenfolgen halb so breit sein. Beispielcode: https://paiza.io/projects/TA90Yho1C0BhGwIqwecACQ
Überprüfung des IP-Adressformats | Hacknote http://hacknote.jp/archives/26988/ Überprüfen Sie, ob die eingegebenen Zeichen IP-Adressen sind. Geben Sie sie auf dem Konsolenbildschirm ein. Java | Sagen Sie es mir! Goo https://oshiete.goo.ne.jp/qa/5572521.html
Recommended Posts