Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связать IdHTTP и IdHTTPServer 
:(
    Опции темы
serg16
Дата 23.8.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.8.2008

Репутация: нет
Всего: нет



Хочу написать прогу, типа прокси. Нужно принимать запросы из браузера, отправлять на сервер и предавать результаты обратно в браузер. Выходить в инет нужно с определенного IP.
В IdHTTPProxyServer не нашел boundIP. Поэтому решил попробовать использовать IdHTTP и IdHTTPServer.
Написал вот такое:
Код

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  IdHTTP1.Request.RawHeaders.Text:=ARequestInfo.RawHeaders.Text;
  if ARequestInfo.Command='GET' then
    begin
      try
        AResponseInfo.ContentText:=IdHTTP1.Get('http://'+ARequestInfo.Host+ARequestInfo.Document);
      except
      end;
      AResponseInfo.RawHeaders.Text:=IdHTTP1.Response.RawHeaders.Text;
      AResponseInfo.ResponseText:=IdHTTP1.ResponseText;
    end;
  if ARequestInfo.Command='POST' then
    begin
    end;
end;

Первый запрос успешно проходит и страничка попадает в браузер. Но дальше идет попытка загрузки стилей, картинок и прога вылетает с ошибкой "Socket Error # 10038 Socket operation on non-socket".
Никогда подобных прог не писал и видимо делаю что-то не так. Подскажите, в чем мои ошибки?
PM   Вверх
SneG0K
Дата 25.8.2008, 12:52 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 2
Всего: 54



Лучше пиши на сокетах или TCPServer/Client
PM WWW Skype   Вверх
Snowy
Дата 25.8.2008, 13:42 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Проблема в том, что ты используешь один TIdHTTP в мультитредовом приложении.
Браузер грузит страницу - нормально грузится.
Потом он ищет там стили, картинки и т.д. и запрашивает их у сервера ОДНОВРЕМЕННО.
Не все одновременно, но по 4-10 параллельных запросов посылает.
А теперь, как ты думаешь, что будет, когда ты будешь мучать TIdHTTP, давая ему одновременно 4 или более разных запросов?
Ясен пень, что ни одного не выполнит и вылетит с критом.
Создавай TIdHTTP локально. Не используй глобальные переменные и объекты.
PM MAIL   Вверх
serg16
Дата 25.8.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.8.2008

Репутация: нет
Всего: нет



Ага! Теперь понятно, почему при втором Get перескакивает на начало. Спасибо!
Поставил последнюю версию indy, изучаю исходник прокси (что-то сразу не сообразил где взять пример smile )
PM   Вверх
p486
Дата 1.7.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.7.2009

Репутация: нет
Всего: нет



вылжи пожалуйста то, что у тебя получилось. тоже бюсь над этой проблемой пока безрезультатно  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.