web-dev-qa-db-ja.com

JavaにInetAddressオブジェクトを作成する

IP番号または名前(両方とも文字列(つまりlocalhostまたは127.0.0.1)で指定されたアドレスをInetAdressオブジェクトに変換しようとしています。 。コンストラクタはなく、InetAddressを返す静的メソッドがあります。ホスト名を取得しても問題はありませんが、IP番号を取得したらどうなりますか? byte []を取得するメソッドが1つありますが、どのように役立つかわかりません。他のすべてのメソッドはホスト名を取得します。

InetAddress APIドキュメント

68
yotamoo

getByNameまたはgetByAddressを使用できるはずです。

ホスト名は、「Java.Sun.com」などのマシン名、またはそのIPアドレスのテキスト表現のいずれかです。

InetAddress addr = InetAddress.getByName("127.0.0.1");

バイト配列をとるメソッドは、次のように使用できます。

byte[] ipAddr = new byte[]{127, 0, 0, 1};
InetAddress addr = InetAddress.getByAddress(ipAddr);
118
Bala R

InetAddressのAPIから

ホスト名は、「Java.Sun.com」などのマシン名、またはそのIPアドレスのテキスト表現のいずれかです。リテラルIPアドレスが指定されている場合、アドレス形式の有効性のみがチェックされます。

9
karakuricoder
ip = InetAddress.getByAddress(new byte[] {
        (byte)192, (byte)168, (byte)0, (byte)102}
);
5
Musa

InetAddress.getByNameは、IPアドレスでも機能します。

JavaDocから

ホスト名は、「Java.Sun.com」などのマシン名、またはIPアドレスのテキスト表現のいずれかです。リテラルIPアドレスが指定されている場合、アドレス形式の有効性のみがチェックされます。

3
kliu

APIは非常に使いやすいです。

// Lookup the dns, if the ip exists.
 if (!ip.isEmpty()) {
     InetAddress inetAddress = InetAddress.getByName(ip);
     dns = inetAddress.getCanonicalHostName(); 
 }
3
Bill