Выбор SOCKS4 в OpenJDK 25 с помощью socksProxyVersion
Используйте документированное свойство версии с явной конечной точкой SOCKS в OpenJDK 25 и учитывайте область действия свойства в масштабе всей JVM.
Для реализации сокетов в OpenJDK 25 выберите SOCKS4 с помощью свойства socksProxyVersion. Его можно указать при запуске приложения:
java -DsocksProxyVersion=4 YourApplicationПриложение по-прежнему может явно указать конечную точку прокси:
Proxy proxy = new Proxy(Proxy.Type.SOCKS,
new InetSocketAddress("proxy.example", 1080));
try (Socket socket = new Socket(proxy)) {
socket.connect(new InetSocketAddress("192.0.2.10", 80), 5000);
socket.setSoTimeout(10000);
}Адреса — это заполнители. Неаутентифицированный адрес из списка SOCKS4-прокси может заполнить хост и порт прокси для разрешённого публичного теста IPv4; фактический целевой адрес IPv4 и порт указывайте отдельно. Этот фрагмент открывает и закрывает поток TCP; протокол приложения использовал бы подключённый поток внутри блока.
Реализация OpenJDK 25 проверяет свойство версии даже тогда, когда конструктор получил обычный явный SOCKS Proxy. Сам публичный объект Proxy содержит тип и адрес, а не поле версии SOCKS для каждого объекта.
Свойство версии действует в масштабе всей JVM. Если параллельные нагрузки требуют разных версий SOCKS, не переключайте его туда и обратно вокруг отдельных запросов. Вместо этого используйте клиентский интерфейс, поддерживающий нужный выбор для каждого соединения. Приватная рефлексия setV4 из старых примеров JDK не является поддерживаемым интерфейсом конфигурации.