Работает ли getByName по ссылке с таким путем, как https://stackoverflow.com/questions, или ссылка должна включать только хост (https://stackoverflow.com)?
Я получаю unknownHostException, когда использую ссылку, содержащую "/". Какие-нибудь советы о том, как решить эту проблему?
Консоль говорит, что ошибка здесь:
socket = new Socket(InetAddress.getByName(adr), port);
Заранее спасибо и извините за плохой английский, так как это не мой родной язык.




InetAddress.getByName ищет имя (обычно в DNS) и возвращает соответствующий адрес.
Нет хоста с именем "https://stackoverflow.com/questions", поэтому возникает исключение UnknownHostException.
Также нет хоста с именем "https://stackoverflow.com" .
В этом конкретном примере имя хоста - «stackoverflow.com».
Если вы хотите проанализировать URL-адрес (например, «https://stackoverflow.com/questions»), чтобы получить имя хоста, вы можете использовать класс java.net.URL:
String hostname = new URL("https://stackoverflow.com/questions").getHost();
System.out.println(hostname); // stackoverflow.com
Спасибо! Но допустим, кто-то просто вводит stackoverflow.com, URL.getHost не будет работать, так как ему нужен протокол, есть ли обходной путь для этого?
@malikaasen Нет, это не сработает, поскольку для new URL нужен действующий URL. Ваша программа может попробовать оба формата и посмотреть, работает ли один из них.
java.sun.com», либо текстовым представлением его IP-адреса.. Только имя хоста, так что"stackoverflow.com"в вашем случае.