我正在构建一个简单的代理服务器。它没有直接连接到互联网,而是通过其他代理服务器使用某种算法动态选择最合适的服务器。该代理服务器连接到Internet。这是一项要求。 所以它看起来像这样:
Client ---> My Main Proxy ---> Proxy1 ----> Internet
或
Client ---> My Main Proxy ---> Proxy2 ----> Internet
或
Client ---> My Main Proxy ---> Proxy3 ----> Internet
我知道如何构建My Main Proxy
的代理。但是,如何将My Main Proxy
与ProxyX
联系起来?
或者更确切地说,我如何通过My Main Proxy
将ProxyX
连接到互联网(并将结果返回到Client
)?
答案 0 :(得分:3)
这取决于代理的类型(套接字或HTTP),但Socket
和URL
类都有设置代理服务器的方法(将它们设置为通过代理创建连接)。
例如:
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.host", 8080));
HttpURLConnection httpConnection = (HttpURLConnection)url.openConnection(proxy);
对于TCP套接字连接
Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("proxy.host", 80));
Socket socket = new Socket(proxy);
InetSocketAddress socketAddress = new InetSocketAddress(address, port);
socket.connect(socketAddress, 1000);