InetAddress.getByName (адрес) unknownhostexception

Работает ли getByName по ссылке с таким путем, как https://stackoverflow.com/questions, или ссылка должна включать только хост (https://stackoverflow.com)?

Я получаю unknownHostException, когда использую ссылку, содержащую "/". Какие-нибудь советы о том, как решить эту проблему?

Консоль говорит, что ошибка здесь:

            socket = new Socket(InetAddress.getByName(adr), port);

Заранее спасибо и извините за плохой английский, так как это не мой родной язык.

Прочтите документацию, то есть javadoc InetAddress.getByName (строковый хост): Имя хоста может быть либо именем компьютера, например «java.sun.com», либо текстовым представлением его IP-адреса.. Только имя хоста, так что "stackoverflow.com" в вашем случае.
Andreas 19.03.2018 00:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
4 853
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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 не будет работать, так как ему нужен протокол, есть ли обходной путь для этого?

malik aasen 19.03.2018 01:01

@malikaasen Нет, это не сработает, поскольку для new URL нужен действующий URL. Ваша программа может попробовать оба формата и посмотреть, работает ли один из них.

user253751 19.03.2018 01:58

Другие вопросы по теме

Как написать преобразователь хоста на основе подключения к DNS-серверу в Java?
Как настроить разрешение имени хоста для использования пользовательского преобразователя хоста, который работает в Java 8 и более поздних версиях?
Сравнение памяти и производительности массива BigInt и Byte в scala
Java Networking — подключение двух компьютеров
InetAddress.getAddress() всегда возвращает ноль, но почему-то все еще работает
Mockito не возвращает ожидаемую строку, вместо этого возвращает издевательский объект
Получение пересечения между двумя пространствами CIDR, когда у вас есть огромные наборы данных
Какой IP-адрес я должен использовать для подключения 2 компьютеров в моем доме с помощью сокетов датаграмм в java?
InetAddress.getByName, UnknownHostException на некоторых устройствах
InetAddress.getHostName () не возвращает ожидаемый обратный поиск имени с удаленного IP-адреса, например команду хоста linux