IP番号または名前(両方とも文字列(つまりlocalhost
または127.0.0.1
)で指定されたアドレスをInetAdressオブジェクトに変換しようとしています。 。コンストラクタはなく、InetAddressを返す静的メソッドがあります。ホスト名を取得しても問題はありませんが、IP番号を取得したらどうなりますか? byte []を取得するメソッドが1つありますが、どのように役立つかわかりません。他のすべてのメソッドはホスト名を取得します。
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);
InetAddressのAPIから
ホスト名は、「Java.Sun.com」などのマシン名、またはそのIPアドレスのテキスト表現のいずれかです。リテラルIPアドレスが指定されている場合、アドレス形式の有効性のみがチェックされます。
ip = InetAddress.getByAddress(new byte[] {
(byte)192, (byte)168, (byte)0, (byte)102}
);
InetAddress.getByNameは、IPアドレスでも機能します。
JavaDocから
ホスト名は、「Java.Sun.com」などのマシン名、またはIPアドレスのテキスト表現のいずれかです。リテラルIPアドレスが指定されている場合、アドレス形式の有効性のみがチェックされます。
APIは非常に使いやすいです。
// Lookup the dns, if the ip exists.
if (!ip.isEmpty()) {
InetAddress inetAddress = InetAddress.getByName(ip);
dns = inetAddress.getCanonicalHostName();
}