Для реализации сокетов в 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 не является поддерживаемым интерфейсом конфигурации.

Похожие статьи