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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странный таймаут TidHTTP 
:(
    Опции темы
AXS
Дата 12.10.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Давненько не писал на программерские форумы, да вот занесла опять нелёгкая в прикладное...
В общем суть такова: опрашиваю диапазон IP-адресов посредством idHTTP (Indy 10)
Код

      urla:=urly[i];
      try
        Memo1.Lines.Add('--------------------------------');
        rqst:=idHttp1.Get(urla);
        Memo1.Lines.Add(urla);
        Memo1.Lines.Add(rqst);
        Memo1.Lines.Add('--------------------------------');
      except
        Memo1.Lines.Add(urla);
        Memo1.Lines.Add(idHttp1.ResponseText);
        Memo1.Lines.Add('--------------------------------');
      end;

ReadTimeout и ConnectTimeout выставляю 2000
Но почему то ответа (преимущественно от несуществующих IP) приходится ждать гораздо дольше чем 2 секунды...
Пробовал выставлять
Код

idHTTP1.Socket.ConnectTimeout:=2000;
idHTTP1.Socket.ReadTimeout:=2000;

но тогда перебор пролетает со скоростью звука и безо всяких ответов...
Кто просвятит по таймаутам тому респект и уважуха  smile 
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
MetalFan
Дата 12.10.2009, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



ни версии делфи, ни версии индей(10.?.?)... телепатов тут нет. извините.
если версия "та, что с делфей", то советую обновиться с оффсайта indyproject.org

Это сообщение отредактировал(а) MetalFan - 12.10.2009, 16:32


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
AXS
Дата 13.10.2009, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MetalFan @ 12.10.2009,  16:30)
ни версии делфи, ни версии индей(10.?.?)... телепатов тут нет. извините.
если версия "та, что с делфей", то советую обновиться с оффсайта indyproject.org

"Та что с делфи" 9, а я написал 10...
______________________________________________

Подробнее:
Indy 10.0.52 (с офф сайта)
Delphi 7.0 (Build 4.453)
Windows XP Professional (Build 2600: Service Pack 2)


--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
MetalFan
Дата 13.10.2009, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



AXS, с 2009 идет 10ка, с 2010 10ка под юникод. про версию делфи в первом посте ни слова.
а теперь по делу: лучше с оффсайта взять Development Snapshot. 10.0.52, если мне память не изменяет, не очень стабильная.
так же в 10ке вроде св-ва Read и Connection таймауты вынесены в TIdHTTP. зачем через сокет устанавливать...
может стоит каким-нибудь профайлером посмотреть (или на худой конец отладчиком), на что инди тратят столько времени?
кстати, ConnectionTimeout, если я не ошибаюсь, в индях реализовано через доп.поток...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
AXS
Дата 13.10.2009, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Короче поотлаживал я idHTTP - точного результата не узнал в силу того что идёт подсчёт времени и если трассировать код indy то получаешь ошибочку отсутствия подключения к инету (я так полагаю)
Но примерно определил: после вызова Get в idHTTP.pas несколько раз выполняется
Код

function TIdCustomHTTP.GetResponseHeaders: TIdHTTPResponse;
begin
  Result := FHTTPProto.Response;
end;

Подвисает на втором выполнении. Я проследовал дальше и разведал такую фишку
Код

      while ATimeout > LSleepTime do begin
        IdGlobal.Sleep(LSleepTime);
        ATimeout := ATimeout - LSleepTime;

        if LInfinite then begin
          ATimeout := LSleepTime + 1;
        end;

LInfinite в моём процессе всегда false. LSleepTime = 125. ATimeout на старте 2000.
Весь цикл нормально прогоняется пока ATimeout не обнулися. Тогда процесс "засыпает" на 5-10 секунд.
Отлаживать дальше не получается - ловлю исключение "Network is unreachable"
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
AXS
Дата 14.10.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Методом научного тыка вычислил что тормоза создаёт WaitFor; при закрытии сокета.
Как с этим побороться, кто скажет?
PS: WaitFor описан в Classes.pas

Это сообщение отредактировал(а) AXS - 14.10.2009, 12:21
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
MetalFan
Дата 15.10.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



AXS, не надо с ним бороться...

Добавлено через 21 секунду
расскажи лучше о методе научного тыка)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
AXS
Дата 21.10.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MetalFan @ 15.10.2009,  21:59)
AXS, не надо с ним бороться...

Добавлено @ 21:59
расскажи лучше о методе научного тыка)

Так как это не надо бороться? Как то нехорошо получается.... Может есть альтернативные компоненты?


А метод научного тыка (в этом  случае) заключается в поочерёдной простановке бряков в OllyDebugger'e
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
MetalFan
Дата 21.10.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



НЕверным путем идете, товарищ!)
альтернативные. да навалом. WinInet, WinHTTP (это не компоненты!), любимый многими ICS. есть еще парочка, которые я в глаза не видел, но тут(на форуме) упоминали вроде.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
AXS
Дата 22.10.2009, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MetalFan @ 21.10.2009,  09:22)
НЕверным путем идете, товарищ!)
альтернативные. да навалом. WinInet, WinHTTP (это не компоненты!), любимый многими ICS. есть еще парочка, которые я в глаза не видел, но тут(на форуме) упоминали вроде.

Да что ж вы всё загадками говорите... Если я иду неверным путём то какой верный?.. 
Нужели у всех при переборе ip-адресов (включая несуществующие) idhttp тупит?...
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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