Когда я попытался выполнить код new InetSocketAddress("localhost", 3000);
в java 13, хост разрешается в localhost/127.0.0.1:3000
вместо разрешения в localhost:3000
.
Любая идея, почему она разрешается с помощью IP-адреса локального хоста (т.е. 127.0.0.1) вместе с localhost
в адресе хоста?
Из-за этой проблемы я не могу подключиться к нужному серверу и в результате исключение UnknownHostException в java.
InetSocketAddress
не преобразуется в URL-адрес HTTP, так откуда вы на самом деле это берете?InetSocketAddress
преобразует указанное имя хоста в IP-адрес, точка, не более того. Таким образом, где бы вы ни получалиhttp://localhost/127.0.0.1:3000
, это исходит не от самогоInetSocketAddress
. - person Remy Lebeau   schedule 24.10.2020new InetSocketAddress(InetAddress.getByName("localhost"), 3000);
- person Remy Lebeau   schedule 24.10.2020localhost/127.0.0.1:3000
- person Vibha   schedule 24.10.2020localhost/127.0.0.1:3000
? Какой инструмент говорит вам об этом? - person President James K. Polk   schedule 24.10.2020InetSocketAddress
для разрешения имени хоста. Я вижу, что переменная-членholder
изInetSocketAddress
типаInetSocketAddressHolder
имеет переменную-членaddr
типаInet4Address
, которая устанавливается на имя хоста. - person Vibha   schedule 24.10.2020InetSocketAddress.toString()
,InetSocketAddress.getHostName()
иInetSocketAddress.getAddress().(getHostName|getHostAddress)()
не возвращают буквальную строку"localhost/127.0.0.1"
(что, честно говоря, должно быть невозможно, учитывая, как на самом деле работаетInet4Address
), то я бы не беспокоился о том, что содержится во внутренних компонентахInetSocketAddress
. - person Remy Lebeau   schedule 24.10.2020localhost/127.0.0.1:3000
является результатом вызоваtoString()
наInetSocketAddress
. Решение: не надо. - person user207421   schedule 24.10.2020