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


Автор: darkmamba 13.1.2009, 23:24
Пинг - это время отклика компьютера(сервера), в моем представлении. Помогите пожалуйста доделать свою первую програмулину, суть которой состоит в мониторинге серверов. Использутся протокол UDP, компонент Indy. Я делаю запрос, мне приходит ответ, нужно высчитать разницу во времени и все было бы ничего, если сервер был бы один, у меня их около 40. Я вот как хотел сначала сделать - отправляем запрос на какойто адрес, включаем таймер(или может просто системное время сверять? вроде там до милисек или я ошибаюсь?), этот адрес пихаем в масив, по приходу пакета смотрим на его адрес, ищем в масиве, если находим выключаем таймер(или считаем разницу во времени). Вообщем у меня сомнения на счет компонента Timer, и как его запустить в несколько потоков? Нужно свежее решение, желательно с небольшим примерчиком )

Код

procedure TForm1.udpUDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
str : TstringStream;
pkt : string;
begin
str:=tstringstream.Create('');
try
  str.CopyFrom(AData, AData.Size);
  pkt:=str.DataString;
finally
  str.Free;
end;
  if POS(#$FF+#$FF+#$FF+#$FF,pkt) = 1 then begin
  delete(pkt,1,4);
    case pkt[1] of
      #$6D: ParseGoldSourse(pkt);
      #$49: ParseShipServer(pkt);
      #$41: Answer(pkt);
      #$44: ParsePlayersInfo(pkt);
    end;
  end;
end;


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