Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SSLSocket的SOCKS5代理_Java_Sockets_Ssl_Proxy_Socks - Fatal编程技术网

Java 使用SSLSocket的SOCKS5代理

Java 使用SSLSocket的SOCKS5代理,java,sockets,ssl,proxy,socks,Java,Sockets,Ssl,Proxy,Socks,我有一个客户机/服务器应用程序,通过Java的SSLSocket远程连接到服务器 我正在尝试实现一种可选模式,通过经过身份验证的SOCKS v5代理启用连接 我尝试过使用,但它没有特别提到SSL 我尝试过设置系统范围的属性(“socksProxyHost”和“socksProxyPort”),但它似乎没有任何作用 我的下一个方法是在SSLSocketFactory中使用factory方法: String proxyHost = Config.prefs.get("PROX

我有一个客户机/服务器应用程序,通过Java的SSLSocket远程连接到服务器

我正在尝试实现一种可选模式,通过经过身份验证的SOCKS v5代理启用连接

我尝试过使用,但它没有特别提到SSL

我尝试过设置系统范围的属性(“socksProxyHost”和“socksProxyPort”),但它似乎没有任何作用

我的下一个方法是在SSLSocketFactory中使用factory方法:

            String proxyHost = Config.prefs.get("PROXY_NAME", "localhost");
            int proxyPort = Config.prefs.getInt("PROXY_PORT", 1080);
            InetSocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
            Socket underlying = new SSLSocket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
            underlying.connect(new InetSocketAddress(getHost(), getPort()));
            socket = (SSLSocket) factory.createSocket(
                    underlying,
                    getHost(),
                    getPort(),
                    true);
但是这种方法的问题是createSocket方法要求底层套接字已经连接,并且我的服务器不接受非SSL连接

使用SOCKS连接到远程服务器的最佳方式是什么?此外,我几乎不知道如何在这个系统中为经过身份验证的SOCKS提供用户名/密码

谢谢

即,将代理主机和端口传递给套接字构造函数,而不是实际的目标主机和端口。
        String proxyHost = Config.prefs.get("PROXY_NAME", "localhost");
        int proxyPort = Config.prefs.getInt("PROXY_PORT", 1080);
        InetSocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
        Socket underlying = new Socket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
        underlying.connect(new InetSocketAddress(getHost(), getPort()));
        socket = (SSLSocket) factory.createSocket(
                underlying,
                proxyHost,
                proxyPort,
                true);