问题描述
我想将套接字代理类型从socks4更改为socks5。这是我在已设置socks4的Socket上尝试的。
public static void setSocks5Version(Socket socket){
try {
Method m = socket.getClass().getDeclaredMethod("getImpl");
m.setAccessible(true);
Object sd = m.invoke(socket);
m = sd.getClass().getDeclaredMethod("setV4");
m.setAccessible(false);
socket.getClass().getDeclaredMethod("getImpl").setAccessible(false);
} catch (Throwable var16) {
var16.printStackTrace();
System.out.println("Failed to set socks proxy to v5!");
System.exit(0);
}
}
它失败了,没有错误。
解决方法
Method m = socket.getClass().getDeclaredMethod("getImpl");
m.setAccessible(true);
Object sd = m.invoke(socket);
sd.getClass().getDeclaredMethod("setV4").setAccessible(false);
m.setAccessible(false);
这解决了我的问题。