Прокси на FreePascal...

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Прокси на FreePascal...

Сообщение Andreich » 04.01.2009 16:01:17

Скажите пожалуйста, кому-нибудь попадалась информация по сабжу или возможно какие-то примеры есть? Просто появилась идея попробовать написать нечто подобное (без каких либо наворотов разумеется), чисто из спортивного интереса! Буду крайне признателен за любую информацию, ссылки или примеры!
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Прокси на FreePascal...

Сообщение Padre_Mortius » 04.01.2009 16:53:48

Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Прокси на FreePascal...

Сообщение Andreich » 04.01.2009 17:37:33

Спасибо за ссылку, посмотрю что это за зверь такой GpHTTPProxy,.. правда насколько я успел понять эта вещь расчитана на Windows, быть может существуют кроссплатформенные варианты?
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Прокси на FreePascal...

Сообщение shade » 04.01.2009 22:01:00

1. слушать сокет
2. прочитать запрос
3. выдрать запрашиваемый URL и заголовок host, если есть (если нет, то выдрать host из URL)
4. отправить полученый запрос как есть на host
5. ответ как есть передавать клиенту.
6. закрыть соединение.

самая простая реализация без учета таких заморочек как кеширование, подмена заголовков, SSL, HTTP-авторизация и т.п.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Прокси на FreePascal...

Сообщение Andreich » 04.01.2009 22:27:20

Я понимаю, что реализация будет основана на сокетах, но как это делается в линуксе (какие функции/библиотеки используются) я представляю смутно. Поиск по яндексу выдает огромное количество ссылок, но все они относятся к windows и описывают работу либо с готовыми компонентами, либо с WinSocet. Отсюда вопрос: существуют ли примеры по работе с сокетами на FreePascal?
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Прокси на FreePascal...

Сообщение ev » 04.01.2009 22:33:15

Отсюда вопрос: существуют ли примеры по работе с сокетами на FreePascal?

полно
на сайте надо глянуть в раздел ссылок - инди и синапс ;)
ev
долгожитель
 
Сообщения: 1772
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Re: Прокси на FreePascal...

Сообщение shade » 11.01.2009 12:25:27

Andreich писал(а):но все они относятся к windows и описывают работу либо с готовыми компонентами, либо с WinSocet.

WinSocket слизан с бсдшных сокетов + добавили ещё кучу своих функций с перфиксом WSA (которые неизвестно кто использует). А так в приницпие API один и тот же. Для работы достаточно подключить юнит sockets - там все эти функции и для Windows и для nix*
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Re: Прокси на FreePascal...

Сообщение Andreich » 12.01.2009 16:53:52

Подскажите такую вещь,.. в одном из примеров по программированию прокси встретилась следующая конструкция:

(код на Delphi)
Код: Выделить всё
type TServerThread = class(TThread)
  private
  {private declarations}
  protected
    procedure Execute;  override;
  public
    iLocalPort, iExtProxyPort : integer;
    sExtProxyAddr : string;
end;

При попытке скомпилировать это же самое в Lazarus получаем ошибку:
main.pas(35,15) Error: Forvard declaration not solved "TServerThread.Execute;"

Что это за директива такая override? По всей видимости она по разному работает в Delphi и Lazarus?!
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Прокси на FreePascal...

Сообщение Дож » 12.01.2009 17:15:27

А реализация процедуры TServerThread.Execute; в коде есть?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Прокси на FreePascal...

Сообщение Andreich » 12.01.2009 17:36:50

Да, в примере такая функция есть, но до ее реализации я еще не добрался. Т.е. выходит, что без описанной процедуры использование override неуместно? Возможно задам совсем глупый вопрос, но просто раньше никогда с использованием override,.. За что отвечает эта директива и почему нельзя обойтись без нее?
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Прокси на FreePascal...

Сообщение Дож » 12.01.2009 17:50:18

Это переопределение виртуальной функции, которая есть в родительском классе. К данной ошибке override отношение не должно иметь.

А вы можете найти в исходнике эту реализацию?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Прокси на FreePascal...

Сообщение Andreich » 12.01.2009 18:00:24

Дож писал(а):А вы можете найти в исходнике эту реализацию?

Разумеется,.. правда сейчас не имею возможности разместить здесь код, т.к. это сканированный вариант книги.
(постараюсь набрать сегодня)
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43

Re: Прокси на FreePascal...

Сообщение Дож » 12.01.2009 18:08:46

Т.е. в вашей программе на компе ее нету? :)
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Прокси на FreePascal...

Сообщение Andreich » 13.01.2009 01:19:56

Уже есть! :) Сори за подобный ляп с моей стороны, теперь все в порядке!

Добавлено спустя 16 часов 40 минут 40 секунд:
Итак, в качестве средства реализации прокси-сервера остановился на IdMappedPortTCP, но вот незадача, при использовании этого компонента загрузка процессора резко возрастает до 90% (а то и более) и все начинает жутко тормозить. Можно ли отследить статистику/работу этого компонента, чтобы понять в чем причина столь высокой загруженности системы?
Andreich
постоялец
 
Сообщения: 268
Зарегистрирован: 17.04.2008 12:33:43


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru