Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.046 c
2-1172057565
Cara
2007-02-21 14:32
2007.03.11
Закрытие формы.


2-1171966110
Bob_l
2007-02-20 13:08
2007.03.11
SellTreeView


2-1171800538
Medusa__
2007-02-18 15:08
2007.03.11
Создание объектов runtime


11-1150407283
parovoZZ
2006-06-16 01:34
2007.03.11
Demo2Forms - не понял юмора


4-1162327378
wp2
2006-10-31 23:42
2007.03.11
Как в библиотеке узнать какая ее вызвала программа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский