[Remoteconsole] Question about proxy

Anton Paymyshev toxe at gorodok.net
Wed Nov 16 23:04:34 NOVT 2005


On Wed, 16 Nov 2005 18:04:10 +0600, Dmitri Korolkov <kel at gorodok.net>  
wrote:

> Здравствуй, Антон
> По предыдущему багу все понял.
> Возникл вопрос: как подключаться через прокси сервер? Предполагаю, что  
> примерно так:
> new_p_socket = new cProxySocket(адрес прокси сервера);
> new_p_socket->connect(адрес relay-я);
> а потом как с обычным соединением. Я прав?
> Корольков Дмитрий
>
> _______________________________________________
> Remoteconsole mailing list
> Remoteconsole at swsoft.nsu.ru
> http://swsoft.nsu.ru/mailman/listinfo/remoteconsole

Здравствуй, Дмитрий

Небольшой экскурс в код.
В реализации этого протокола есть такой класс как cPSocket - класс  
реализующий интерфейс соединения(iSocket) и имеющий так называемый  
"транспортный уровень", то есть это некая обертка одного соединения воrруг  
другого. Далее есть класс cActiveSocket - в принципе тот же cPSocket, но  
он имеет связанный с ним таймер и подразумевается, что все его методы  
могут вызываться из разных потоков(поэтому код всех функций защищен  
мутексами). cPrpSocket - то же самое, что и cActiveSocket но при создании  
инициализируется cPrpController'ом.

По поводу соединения с пркоси.
В конструкторе cPrpController'a есть такой аргумент как транспортный  
уровень. В примерах в качестве значения передается NULL, поэтому в  
качестве транспортного уровня в конструкторе cPSocket создается простой  
cSocket. Но в качестве значения аргумента тр. у-ня можно передать уже  
созданный объект класса реализующего iSocket - cProxySocket. Далее когда  
произойдет вызов connect у cPrpSocket'а он попытается сначала соеденить  
свой "транспортный уровень"(здесь соединиться с прокси и послать запрос),  
а затем начнет инициацию PRP протокола поверх созданного соединения.
Итак:
		Forw =  new BAM::cPrpSocket(T, lm, BAM::cPacket((BAM::byte*)argv[2],  
strlen(argv[2])), (BAM::word)atoi(argv[3]), BAM::Prp_Socket_Client);

где T инциализировать как:
T = new cProxySocket(.....);

Ну вроде все. Надеюсь понятно :)







More information about the Remoteconsole mailing list