2012-02-23 22 views
3

文字列がIPv4アドレスかIPv6アドレスかをチェックしたいが、それ以外は何もチェックしない。標準のJavaライブラリを使ってこれを達成する方法はありますか?IPv4アドレスとIPv6アドレスは一致しますが、ホスト名は一致しませんか?

私がの知っている:

  • InetAddress.getByName(STR) - しかし、それはホスト名を受け入れ
  • IPAddressUtil.isIPv4LiteralAddress(STR) - しかし、それは内部クラスであり、コンパイラの警告に
を与えます

私は正規表現を使用することができますが、私は既存の方法を使用することを好みます。

+0

:ここ

は、より多くのサンプル・コードです。私がやったのは、想定されたIPアドレスをIPv4 | 6の正規表現(有効なIPアドレスのようなものを整理しないように並べ替えるため)で実行し、アドレスのInetAddress.getByName(str)を呼び出すことでした。 – honeyp0t

答えて

-1

アドレスがx.x.x.x.x.x.xの場合はIPV6アドレス、Inet4AddressクラスとInet6Addressクラスを調べてみてください。

+0

ITYM x:x:x:x:x:x:x:x – glglgl

+0

もちろん、短い形式(ゼロをスキップする)、ループバックアドレスなどがあります。 – honeyp0t

1

Cでこれを行う方法はinet_pton()を使用することです。コードをJavaに移植することができます。 (または、複雑な正規表現を使用するのは簡単です。)

this questionの正規表現を見て、気分が変わったらホスト名と一致しないように変更してください勇敢。 ;-)

0

The IPAddress Java libraryは、多態的にIPv4とIPv6の両方をサポートします。それはあなたが描写していることをする方法を持っています。

あなたの問題を解決するのはsample codeです。私たちはこれを達成する方法(デフォルトで含ま、のように)何の標準が存在しないことに同意することができると思い

IPAddressString ipString = new IPAddressString("ipv4 or ipv6 address string goes here"); 
System.out.println("IPv4: " + ipString.isIpV4() + " IPv6: " + ipString.isIpV6()); 
関連する問題