Прокси на FreePascal...
Модератор: Модераторы
Прокси на FreePascal...
Скажите пожалуйста, кому-нибудь попадалась информация по сабжу или возможно какие-то примеры есть? Просто появилась идея попробовать написать нечто подобное (без каких либо наворотов разумеется), чисто из спортивного интереса! Буду крайне признателен за любую информацию, ссылки или примеры!
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Спасибо за ссылку, посмотрю что это за зверь такой GpHTTPProxy,.. правда насколько я успел понять эта вещь расчитана на Windows, быть может существуют кроссплатформенные варианты?
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
1. слушать сокет
2. прочитать запрос
3. выдрать запрашиваемый URL и заголовок host, если есть (если нет, то выдрать host из URL)
4. отправить полученый запрос как есть на host
5. ответ как есть передавать клиенту.
6. закрыть соединение.
самая простая реализация без учета таких заморочек как кеширование, подмена заголовков, SSL, HTTP-авторизация и т.п.
2. прочитать запрос
3. выдрать запрашиваемый URL и заголовок host, если есть (если нет, то выдрать host из URL)
4. отправить полученый запрос как есть на host
5. ответ как есть передавать клиенту.
6. закрыть соединение.
самая простая реализация без учета таких заморочек как кеширование, подмена заголовков, SSL, HTTP-авторизация и т.п.
Я понимаю, что реализация будет основана на сокетах, но как это делается в линуксе (какие функции/библиотеки используются) я представляю смутно. Поиск по яндексу выдает огромное количество ссылок, но все они относятся к windows и описывают работу либо с готовыми компонентами, либо с WinSocet. Отсюда вопрос: существуют ли примеры по работе с сокетами на FreePascal?
Отсюда вопрос: существуют ли примеры по работе с сокетами на FreePascal?
полно
на сайте надо глянуть в раздел ссылок - инди и синапс
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Andreich писал(а):но все они относятся к windows и описывают работу либо с готовыми компонентами, либо с WinSocet.
WinSocket слизан с бсдшных сокетов + добавили ещё кучу своих функций с перфиксом WSA (которые неизвестно кто использует). А так в приницпие API один и тот же. Для работы достаточно подключить юнит sockets - там все эти функции и для Windows и для nix*
Подскажите такую вещь,.. в одном из примеров по программированию прокси встретилась следующая конструкция:
(код на Delphi)
При попытке скомпилировать это же самое в Lazarus получаем ошибку:
main.pas(35,15) Error: Forvard declaration not solved "TServerThread.Execute;"
Что это за директива такая override? По всей видимости она по разному работает в Delphi и Lazarus?!
(код на 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?!
А реализация процедуры TServerThread.Execute; в коде есть?
Да, в примере такая функция есть, но до ее реализации я еще не добрался. Т.е. выходит, что без описанной процедуры использование override неуместно? Возможно задам совсем глупый вопрос, но просто раньше никогда с использованием override,.. За что отвечает эта директива и почему нельзя обойтись без нее?
Это переопределение виртуальной функции, которая есть в родительском классе. К данной ошибке override отношение не должно иметь.
А вы можете найти в исходнике эту реализацию?
А вы можете найти в исходнике эту реализацию?
Дож писал(а):А вы можете найти в исходнике эту реализацию?
Разумеется,.. правда сейчас не имею возможности разместить здесь код, т.к. это сканированный вариант книги.
(постараюсь набрать сегодня)
Т.е. в вашей программе на компе ее нету? 
Уже есть!
Сори за подобный ляп с моей стороны, теперь все в порядке!
Добавлено спустя 16 часов 40 минут 40 секунд:
Итак, в качестве средства реализации прокси-сервера остановился на IdMappedPortTCP, но вот незадача, при использовании этого компонента загрузка процессора резко возрастает до 90% (а то и более) и все начинает жутко тормозить. Можно ли отследить статистику/работу этого компонента, чтобы понять в чем причина столь высокой загруженности системы?
Добавлено спустя 16 часов 40 минут 40 секунд:
Итак, в качестве средства реализации прокси-сервера остановился на IdMappedPortTCP, но вот незадача, при использовании этого компонента загрузка процессора резко возрастает до 90% (а то и более) и все начинает жутко тормозить. Можно ли отследить статистику/работу этого компонента, чтобы понять в чем причина столь высокой загруженности системы?
