30

文字列を に変換しようとしていますInetaddress。ホスト名を解決しようとしていません。文字列は ipv4 アドレスです。機能しますInetAddress.getByName(String host)か?または、手動で解析する必要がありますか?

4

5 に答える 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 に答える