Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Скорость интернета


Автор: Maestro 7.9.2005, 19:04
Подскажите как определить скорость загрузки страницы из ИНЕТА (килобит в секунду) пользуясь компонентами INDY?

Автор: _hunter 7.9.2005, 19:20
засекаеш время до начала скачивания. береш время после скачивания. вычитаеш. делиш размер файла на разницу времен. все...

Автор: Snowy 7.9.2005, 19:34
Если нужно мерять в процессе, то сажай на событие OnWork.
Из него заодно и узнаешь количество байтиков.

Автор: Maestro 8.9.2005, 16:53
Спасибо за подсказку, но мне нужен пример. Я пробовал с компонентом IdHTTP, засечь время загрузки через Timer, ничего невыходит во время соединения таймер подвисает. И как определить вес страницы?

Люди если не затреднит дайте пример!!!

Автор: Snowy 8.9.2005, 17:10
Цитата(Maestro @ 8.9.2005, 16:53)
Спасибо за подсказку, но мне нужен пример.

C примером пока сложно. Может чуть позже найду время накатать.
Цитата(Maestro @ 8.9.2005, 16:53)
Я пробовал с компонентом IdHTTP, засечь время загрузки через Timer, ничего невыходит во время соединения таймер подвисает.

Просто вставь в OnWork:
Код

  Application.ProcessMessages;

В любом случае потребуется, если захочешь отображать проценты или бегунок.
Но детектить нужно не в таймере, а в OnWork.
Цитата(Maestro @ 8.9.2005, 16:53)
И как определить вес страницы?

До скачки, вызови такую функцию. Она вернет размер файла в байтах.
Код

function GetHttpFileSize(url: string): integer;
var
  http: TIdHttp;
  a: string;
begin
  http:=TIdHttp.Create(nil);
  http.Head(url);
  s:=http.Response.RawHeaders.Values['Content-Length'];
  http.Free;
  if not TryStrToInt(s, result) then result:=0;
end;

Добавлено @ 17:12
P.S. Функцию не проверял - накатал на скорую руку.
Возможно придется подправить...

Автор: _hunter 8.9.2005, 17:18
теоретически в OnWorkBegin можно на AWorkCountMax глянуть. тоже размер должен быть

Автор: Maestro 8.9.2005, 17:50
Функция неработает, а AWorkCountMax показывает полный вес страницы, но как засечь время???

Автор: _hunter 8.9.2005, 18:11
как хочеш. начиная от GetTickCount() и Time() и заканчивая GetSystemTimeAsFileTime()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)