Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Пинг нескольких компов одновременно   Найти похожие ветки 

 
Script   (2006-10-02 15:53) [0]

Надо чтоб компы пропинговалиьс как можно быстрее, а до каждого компа время пинга может достигать 2 с.
Своим скудным разумом решил использовать мнгопоточность. Т.к. использовал сие впервые. Возможно ошибся где-то так что вам станет смешно :(

TPingThread = class(TThread)
 private
  PingNum:integer;
 public
   constructor Create(Num:Integer);
   procedure Execute; override;
 end;

Создаю по числу машин в сети
for i:=1 to CompsCount do ICMParray[i]:=TIdIcmpClient.Create(Form2);
Создаю список для потоков
 ThreadList := TList.Create;
По нажатию кнопки на форме создаю потоки
 for i:=1 to CompsCount do ThreadList.Add(TPingThread.Create(i));
Жду 10 сек
Sleep(10000)
И начинаю выводить результаты
for i:=1 to 200 do Memo1.Lines.Add(results[i]);

У потока методы
constructor TPingThread.Create(Num:integer);
begin
 PingNum:=Num;
 inherited Create(False);
end;
procedure TPingThread.Execute;
begin
 FreeOnTerminate := True;
 while not (Terminated or Application.Terminated) do
 begin
  ICMPar[PingNum].Host:=ipadr[PingNum];
  ICMPar[PingNum].ReceiveTimeout:=2000;
  ICMPar[PingNum].Ping;
  if ICMPar[PingNum].ReplyStatus.TimeToLive > 0 then
   result[PingNum]:="пингуется" //массив строк с результатами пингования
  else
   result[PingNum]:="не пингуется";
  Terminate;
  WaitFor;
 end;
end;
В итоге у меня все компы всегда пингуются :-(
Причем заметил такую штуку Host и ReplyStatus.FromIpAddress отличаются постоянно. Такое ощущение что где-то что-то не успевает отработать. Вобщем помогите ламеру кто чем сможет.


 
Ketmar ©   (2006-10-02 15:56) [1]

а) всё неправильно %-)
б) а разве icmp из индейцев не асинхронная? (тут не уверен -- не юзаю индейцев %-)


 
Script   (2006-10-02 15:58) [2]

А как правильно? По примеру из инета делал.


 
Ketmar ©   (2006-10-02 16:14) [3]

правильно -- сначала почитать какую-нибудь теорию. потому что как иначе я поясню, что неверно? всё. %-)


 
Сергей М. ©   (2006-10-02 16:22) [4]


> Жду 10 сек


10 секунд - цифирь эта взята от балды, я так понимаю ..


 
Script   (2006-10-02 16:31) [5]

Ну да. Вобще т.к. ReceiveTimeout:=2000 то больше 2-х сек не имеет смысла ждать. Но дело-то не в этом.


 
Script   (2006-10-02 16:33) [6]

2 Ketmar, я тут по последним темам прошелся. Ты вобще реально чем-то помочь можешь? От тебя кроме "читай доки", "ищи в google", "ошибка в DNA" ничего нет.


 
Сергей М. ©   (2006-10-02 16:36) [7]


> Вобще т.к. ReceiveTimeout:=2000 то больше 2-х сек не имеет
> смысла ждать


Ждать следует ззавершения всех запущенных тобой потоков !


 
Script   (2006-10-02 16:42) [8]

Terminate;
 WaitFor;

Насколько я понимаю поток прибивается сразу после того как один раз отработает.


 
Ketmar ©   (2006-10-02 17:00) [9]

>[6] Script 2-Oct-2006, 16:33
>кроме "читай доки", "ищи в google", "ошибка в
>DNA" ничего нет.
sapienti sat. я неоднократно упоминал, что учу думать. сиречь, использовать мозг. а пережёваной пищей пусть другие кормят.


 
Script   (2006-10-02 17:36) [10]

У Вас весьма интересный метод учить думать г-н Ketmar. Если Вас так же учили с детства - сочустую.


 
Ketmar ©   (2006-10-02 17:39) [11]

угу. именно так. давали направление, и говорили: дальше -- сам. не жалею. более того -- благодарен. а если кого учили думать, давая готовые решения... так и рождаются "батонокидатели".


 
Сергей М. ©   (2006-10-04 09:00) [12]


> Script   (02.10.06 16:42) [8]
> Насколько я понимаю поток прибивается сразу после того как
> один раз отработает.


Правильно понимаешь.

А вот по поводу ожидания потоком собственного завершения (WaitFor) ты понимаешь неправильно.



Страницы: 1 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
15-1171315254
ProgRAMmer Dimonych
2007-02-13 00:20
2007.03.11
Помогите найти произведение в оригинале


2-1172051723
Максимус
2007-02-21 12:55
2007.03.11
Связанные таблицы


15-1171255415
Slider007
2007-02-12 07:43
2007.03.11
С днем рождения ! 11 февраля


15-1171438394
Rouse_
2007-02-14 10:33
2007.03.11
А вы говорите зачем в Москве много зарабатывать?


2-1171859755
XDISABLED
2007-02-19 07:35
2007.03.11
Edit