#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
.