文字列を に変換しようとしていますInetaddress。ホスト名を解決しようとしていません。文字列は ipv4 アドレスです。機能しますInetAddress.getByName(String host)か?または、手動で解析する必要がありますか?
21016 次
5 に答える
24
com.google.common.net.InetAddresses.forString(String ipString)これには、渡された文字列に関係なく DNS ルックアップを実行しないため、より適しています。
于 2012-06-15T16:28:53.880 に答える
14
はい、うまくいきます。 APIはこれについて非常に明確であり (「ホスト名は、"java.sun.com" などのマシン名か、その IP アドレスのテキスト表現のいずれかです。」)、もちろん、自分で簡単に確認できます。
于 2010-02-22T05:45:03.470 に答える
1
を に渡す前に、正規表現を使用して数値以外の IP アドレスを除外してみStringてくださいgetByName()。その後getByName()、名前解決を試みません。
于 2013-03-28T17:06:39.207 に答える
0
オープンソースの IPAddress Java ライブラリは、IPv6 および IPv4 のすべての標準表現を検証し、DNS ルックアップなしで検証します。免責事項: 私はそのライブラリのプロジェクト マネージャーです。
次のコードは、あなたが要求していることを行います:
String s = "1.2.3.4";
try {
IPAddressString str = new IPAddressString(s);
IPAddress addr = str.toAddress();
InetAddress inetAddress = addr.toInetAddress(); //IPv4 or IPv6
if(addr.isIPv4() || addr.isIPv4Convertible()) {//IPv4 specific
IPv4Address ipv4Addr = addr.toIPv4();
Inet4Address inetAddr = ipv4Addr.toInetAddress();
//use address
}
} catch(AddressStringException e) {
//e.getMessage has validation error
}
于 2017-12-18T02:27:12.350 に答える