SOCKS4 in OpenJDK 25 mit socksProxyVersion auswählen
Verwenden Sie die dokumentierte Versionseigenschaft mit einem expliziten SOCKS-Endpunkt in OpenJDK 25 und berücksichtigen Sie den JVM-weiten Geltungsbereich der Eigenschaft.
Für die Socket-Implementierung von OpenJDK 25 wählen Sie SOCKS4 mit der Eigenschaft socksProxyVersion. Sie kann beim Starten der Anwendung übergeben werden:
java -DsocksProxyVersion=4 YourApplicationDie Anwendung kann den Proxy-Endpunkt weiterhin explizit angeben:
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);
}Die Adressen sind Platzhalter. Eine nicht authentifizierte Adresse aus der SOCKS4-Proxy-Liste kann Host und Port des Proxys für einen zulässigen öffentlichen IPv4-Test füllen; verwenden Sie die tatsächliche Ziel-IPv4-Adresse und den Port separat. Dieses Fragment öffnet und schließt den TCP-Stream; ein Anwendungsprotokoll würde den verbundenen Stream innerhalb des Blocks nutzen.
Die Implementierung von OpenJDK 25 prüft die Versionseigenschaft auch dann, wenn der Konstruktor ein gewöhnliches explizites SOCKS-Proxy-Objekt erhalten hat. Das öffentliche Proxy-Objekt selbst enthält einen Typ und eine Adresse, kein SOCKS-Versionsfeld pro Objekt.
Die Versionseigenschaft gilt JVM-weit. Wenn gleichzeitige Arbeitslasten unterschiedliche SOCKS-Versionen erfordern, schalten Sie sie nicht um einzelne Anforderungen herum hin und her. Verwenden Sie stattdessen eine Client-Schnittstelle, die die erforderliche Auswahl pro Verbindung unterstützt. Private setV4-Reflexion aus alten JDK-Beispielen ist nicht die unterstützte Konfigurationsschnittstelle.