掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッドを使用してPINGを飛ばすには? (ID:8750)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
スタテツさん、HPW さん どうもありがとうございます. 当方システムOSはWindows2000です。 プログラムを実行してみました. 結果>> フォーム上にパネルを254個用意し、 TPanel を配列でせんげんしました。 そして、192.168.1.1〜192.168.1.254 までPingを実行しました。 TPingThreadクラスにTagプロパティを追加して、 以下のように呼び出しました. for i:=1 to 254 do begin pthread[i] := TPingThread.Create(True); pthread[i].Priority := tpLowest; pthread[i].IdIcmpClient := TIdIcmpClientPing.Create(self); pthread[i].IdIcmpClient.ReceiveTimeout := 5000; pthread[i].IdIcmpClient.Host := '192.168.1.' + IntToStr(i); pthread[i].Tag := i; pthread[i].Resume; end; スレッドユニットでは以下のようにしました。 procedure TPingThread.Execute; begin IdIcmpClient.OnReply := IdIcmpClientReply; IdIcmpClient.Ping; end; procedure TPingThread.IdIcmpClientReply(ASender: TComponent; const AReplyStatus: TReplyStatus); var S: String; begin if AReplyStatus.FromIpAddress = '192.168.1.' + IntToStr(Tag) then begin Form1.ViewPanel[Tag].Color := clBlue; end else begin Form1.ViewPanel[Tag].Color := clRed; end; IdIcmpClient.Free; end; 以上のプログラムを作成してみましたが、 実際 AReplyStatus.FromIpAddress に入ってくるアドレスの値(文字列)が 違っているようで、実際には電源が入っているのに赤くなります。 電源の入っていないものが青くなることはありませんでした. そこで、Syncronize 等を使用すればいけるのだろうと思いますが、 その方法がわかりません。 どうすればよいのでしょうか? よろしくお願いします.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.