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

Схожі статті