Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

星期二, 9月 18, 2007

Ping工具



視窗上有
2個TLabel、1個TEdit、1個TMemo、1個TButton、1個LMDSpinEdit1,然後再放一個IdIcmpClient元件(在IndyClient那裡)
然後在Button的onClick點兩下,及IdIcmpClient元件上點兩下,最後加入下列程式碼:

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
IdIcmpClient1.OnReply := IdIcmpClient1Reply; //設置回應屬性
IdIcmpClient1.ReceiveTimeout := 1000; //設置連線時間
Button1.Enabled := False; //禁止按鈕
try
IdIcmpClient1.Host := Edit1.Text; //輸入Edit1的Host
for i := 1 to LMDSpinEdit1.Value do begin //開始連線次數迴圈
IdIcmpClient1.Ping; //開始連線
Application.ProcessMessages; //發送訊息
//sleep(1000);//可加入暫停一秒
end;
finally
Button1.Enabled := True; //恢復按鈕
end;
end;

procedure TForm1.IdIcmpClient1Reply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var
sTime: string;
begin
// TODO: check for error on ping reply (ReplyStatus.MsgType?)
if (AReplyStatus.MsRoundTripTime = 0) then
sTime := '<1'
else
sTime := '=';

Memo1.Lines.Add(Format('IP位址=%s bytes=%d ICMP_seq=%d TTL=%d 存在時間%s%d豪秒',
[AReplyStatus.FromIpAddress, //IP位址
AReplyStatus.BytesReceived, //Bytes
AReplyStatus.SequenceId,
AReplyStatus.TimeToLive, //TTL
sTime,
AReplyStatus.MsRoundTripTime])); //時間
end;

沒有留言: