具有Socks4代理的Java套接字更改为Socks5

问题描述

我想将套接字代理类型从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);

这解决了我的问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...