Створення об'єкта InetAddress в Java


82

Я намагаюся перетворити адресу, вказану за номером IP або іменем, як у рядку (тобто, localhostабо 127.0.0.1), в об'єкт InetAdress . Не існує конструктора, а досить статичні методи, які повертають InetAddress . Отже, якщо я отримую ім’я хоста, це не проблема, але що, якщо я отримаю номер IP? Існує один метод, який отримує байт [], але я не впевнений, як це може мені допомогти. Всі інші методи отримують ім'я хоста.

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

Відповіді:


133

Ви повинні мати можливість використовувати 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);

3
Що ви робите, коли цифри перевищують 127? Наприклад IP 192.168.0.1. Ви маскуєте int за допомогою 0xFF? Або ви просто додаєте int до байта?
Matej Kormuth

@MatejKormuth Я думаю, маскування за допомогою 0xFF має спрацювати.
Bala R

1
@ matej-kormuth ви також можете висловити це так, як це робить Inet4AddressImpl:byte[] loopback = {0x7f,0x00,0x00,0x01};
Carlos Ferreyra

"Конструктор за замовчуванням не може обробляти тип винятків UnknownHostException, викинутий неявним суперконструктором. Потрібно визначити явний конструктор"
Schütze,

Допомагає вкласти створення InetAddress в оператор try / catch.
Метью Редмонд,

9

З API для InetAddress

Ім'я хоста може бути як іменем машини, наприклад "java.sun.com", так і текстовим поданням її IP-адреси. Якщо вказана буквальна IP-адреса, перевіряється лише дійсність формату адреси.



3

InetAddress.getByName також працює для ip-адреси.

З JavaDoc

Ім'я хоста може бути як іменем машини, наприклад "java.sun.com", так і текстовим поданням її IP-адреси. Якщо вказана буквальна IP-адреса, перевіряється лише дійсність формату адреси.


3

API досить простий у використанні.

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

0

Це проект отримання IP-адреси будь-якого веб-сайту, він корисний і такий простий у створенні.

import java.net.InetAddress;
import java.net.UnkownHostExceptiin;

public class Main{
    public static void main(String[]args){
        try{
            InetAddress addr = InetAddresd.getByName("www.yahoo.com");
            System.out.println(addr.getHostAddress());

          }catch(UnknownHostException e){
             e.printStrackTrace();
        }
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.