2015-07-12 3 views
1

Я строю прокси-сервер. Он не подключается напрямую к Интернету, а через другие прокси-серверы, выбирая наиболее подходящий динамически, используя какой-либо алгоритм. И этот прокси-сервер подключается к Интернету. Это требование. Так это выглядит следующим образом:Подключение к Интернету через прокси через другой прокси

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)?

ответ

3

Это зависит от типа прокси (Socket или 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); 
+0

что 'нового InetSocketAddress (адрес, порт);' на 3-е линии 2-го примера? если мы подключаемся к прокси-серверу, зачем нам нужна еще одна пара адресов и портов? –

+0

@AlexanderSupertramp Это адрес назначения и порт, вам нужно указать прокси-серверу, к какому адресу перенаправить ваше соединение. – Titus

+0

, пожалуйста, взгляните на это http://stackoverflow.com/questions/31533150/unable-to-make-a-request-via-proxy –

Смежные вопросы