Получение IP определенного хоста не работает по сети с Java

#java #networking #ip-address

#java #сеть #ip-адрес

Вопрос:

Я не могу получить IP-адрес имени хоста по сети. Я могу получить общедоступный IP-адрес, но, похоже, не работает по сети из-за отсутствия протокола:

 public static void main(String[] args) throws UnknownHostException {

    String url = "host22.my.network";
    getIp(url);
}

public static void getIp(String url) throws UnknownHostException{

    try { 
        InetAddress ip = InetAddress.getByName(new URL(url).getHost()); 
        System.err.println(ip);
    } 
    catch (MalformedURLException e) { 
        System.err.println(e.getMessage());
    }
}
  

возможно, отсутствует префикс протокола

Комментарии:

1. Возможно, что угодно. Что это было за исключение и его сообщение? Однако ваша String константа, безусловно, не является URL-адресом. Трудно понять, почему вы берете совершенно подходящее имя хоста, пытаетесь преобразовать его в URL, только для того, чтобы затем попытаться вернуть имя хоста обратно, когда оно у вас уже было.

2. Сообщение «нет протокола», что я должен указать в качестве протокола?

3. Вам не нужен протокол. Вам не нужен URL. Вам нужно имя хоста, и оно у вас уже есть.

4. @user207421 это ваше мнение или вы тоже пробовали то, что говорите? Потому что фрагмент кода, о котором я упоминал, не работает с простым именем хоста

5. InetAddtess.getByName() принимает String hostname аргумент. Это не мнение, а факт. Странный вопрос. «Не работает» — это не описание проблемы.

Ответ №1:

Поскольку @ejp больше не хочет отвечать на вопросы, вот что он говорит:

new URL(url).getHost() неверно. Вместо этого используйте

 InetAddress ip = InetAddress.getByName(url)
  

И поскольку вы фактически не передаете URL, переименуйте параметр в hostname .