InetSocketAddress для локального хоста

Когда я попытался выполнить код new InetSocketAddress("localhost", 3000); в java 13, хост разрешается в localhost/127.0.0.1:3000 вместо разрешения в localhost:3000.

Любая идея, почему она разрешается с помощью IP-адреса локального хоста (т.е. 127.0.0.1) вместе с localhost в адресе хоста?
Из-за этой проблемы я не могу подключиться к нужному серверу и в результате исключение UnknownHostException в java.


person Vibha    schedule 23.10.2020    source источник
comment
InetSocketAddress не преобразуется в URL-адрес HTTP, так откуда вы на самом деле это берете? InetSocketAddress преобразует указанное имя хоста в IP-адрес, точка, не более того. Таким образом, где бы вы ни получали http://localhost/127.0.0.1:3000, это исходит не от самого InetSocketAddress.   -  person Remy Lebeau    schedule 24.10.2020
comment
Может быть связано: localhost не разрешается в 127.0.0.1   -  person Remy Lebeau    schedule 24.10.2020
comment
У вас есть такая же проблема, если вы используете это вместо этого? new InetSocketAddress(InetAddress.getByName("localhost"), 3000);   -  person Remy Lebeau    schedule 24.10.2020
comment
Спасибо, Реми, я тоже пытался это сделать. Его решение localhost/127.0.0.1:3000   -  person Vibha    schedule 24.10.2020
comment
Откуда вы получаете информацию о том, что он разрешается в localhost/127.0.0.1:3000? Какой инструмент говорит вам об этом?   -  person President James K. Polk    schedule 24.10.2020
comment
Я использую Java API InetSocketAddress для разрешения имени хоста. Я вижу, что переменная-член holder из InetSocketAddress типа InetSocketAddressHolder имеет переменную-член addr типа Inet4Address, которая устанавливается на имя хоста.   -  person Vibha    schedule 24.10.2020
comment
@Vibha Смотрите, ГДЕ именно? ЧТО вы используете, чтобы посмотреть на это? Вы смотрите на внутреннюю реализацию и ожидаете, что она будет иметь смысл? Если только InetSocketAddress.toString(), InetSocketAddress.getHostName() и InetSocketAddress.getAddress().(getHostName|getHostAddress)() не возвращают буквальную строку "localhost/127.0.0.1" (что, честно говоря, должно быть невозможно, учитывая, как на самом деле работает Inet4Address), то я бы не беспокоился о том, что содержится во внутренних компонентах InetSocketAddress.   -  person Remy Lebeau    schedule 24.10.2020
comment
localhost/127.0.0.1:3000 является результатом вызова toString() на InetSocketAddress. Решение: не надо.   -  person user207421    schedule 24.10.2020