Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

прокси на free pascal + synapse [linux]


hrustbb   (31.05.15 15:28

Пишу простенький вариант прокси на free pascal под линукс, с использованием библиотеки synapse. Коечто набросал, в итоге клиент подсоединяется к прокси, благополучно проходит авторизацию, а дальше запарка (для соединения с моим прокси использую proxychains). Я понимаю что кроме вышеизложенного там еще очень много недочетов (уничтожение объектов и т.п), но пока нужно разобраться только с этим.

Собственно код
После процедуры авторизации попадаем сюда


if stage = RESPONSE_CONNECTION_OK then begin
 //сокет принимающий данные из интернета
 Self.tcp.OnReadFilter:=@Self.OnReadFilterTCP;
 //сокет принимающий данные от клиента
 Self.ConnectionSocket.OnReadFilter:=@Self.OnReadFilterClient;

 Self.ConnectionSocket.RecvPacket(120000);
 Self.tcp.RecvPacket(120000);
end;


Собственно обработчики:


procedure CProxyThread.OnReadFilterTCP(Sender: TObject; var Value: AnsiString);
var str_stream:TStringStream;
   sock:TTCPBlockSocket;
begin
 str_stream:=TStringStream.Create(Value);
 Self.ConnectionSocket.SendStreamRaw(str_stream);
 sock:=TTCPBlockSocket(Sender);
 sock.RecvPacket(120000);
end;

procedure CProxyThread.OnReadFilterClient(Sender: TObject; var Value: AnsiString);
var str_stream:TStringStream;
   sock:TTCPBlockSocket;
begin
 str_stream:=TStringStream.Create(Value);
 Self.tcp.SendStreamRaw(str_stream);
 sock:=TTCPBlockSocket(Sender);
 sock.RecvPacket(120000);
end;


в итоге данные через прокси не передаются


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо