Создание объекта InetAddress в Java - PullRequest
67 голосов
/ 19 апреля 2011

Я пытаюсь преобразовать адрес, заданный IP-номером или именем, как в String (т.е. localhost или 127.0.0.1), в InetAdress объект.Там нет конструктора, но есть статические методы, которые возвращают InetAddress .Так что, если я получу имя хоста, это не проблема, но что, если я получу номер IP?Есть один метод, который получает byte [] , но я не уверен, как это может мне помочь.Все остальные методы получают имя хоста.

Документация API InetAddress

Ответы [ 5 ]

114 голосов
/ 19 апреля 2011

Вы должны использовать 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);
9 голосов
/ 19 апреля 2011

из API для InetAddress

Имя хоста может быть машиной имя, например "java.sun.com" или текстовое представление его IP адрес. Если буквальный IP-адрес при условии, только срок действия формат адреса проверен.

5 голосов
/ 15 мая 2016
ip = InetAddress.getByAddress(new byte[] {
        (byte)192, (byte)168, (byte)0, (byte)102}
);
3 голосов
/ 19 апреля 2011

API довольно прост в использовании.

// Lookup the dns, if the ip exists.
 if (!ip.isEmpty()) {
     InetAddress inetAddress = InetAddress.getByName(ip);
     dns = inetAddress.getCanonicalHostName(); 
 }
3 голосов
/ 19 апреля 2011

InetAddress.getByName также работает для IP-адреса.

Из JavaDoc

Имя хоста может быть машиной имя, например "java.sun.com" или текстовое представление его IP адрес. Если буквальный IP-адрес при условии, только срок действия формат адреса проверен.

...