Пинг - это время отклика компьютера(сервера), в моем представлении. Помогите пожалуйста доделать свою первую програмулину, суть которой состоит в мониторинге серверов. Использутся протокол 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;
|
|