TIdIcmpClient控件编写ping的操作的代码
我想用TIdIcmpClient控件编写ping的操作,可以改变封包的大小和次数,那位大虾帮忙贴出代码,非常感谢!
[解决办法]
void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,
const TReplyStatus &AReplyStatus)
{
Sum = AReplyStatus.ReplyStatusType;
}
//
//以下是实现ping的部分,自己改改,加到你需要的地方
IdIcmpClient1->Host = WideString(ADOQuery1->FieldByName("FtpServiceHost")->AsString);
try {
IdIcmpClient1->Ping();
Application->ProcessMessages();
}
catch(...)
{
return false;
}
if(Sum==0)//这里是检查的状态,0是正常,你也可以检查其他的。
{
IdIcmpClient1->TTL = 256;这个设置包大小,ping的次数,你用循环调用
IdIcmpClient1->Ping();这个就可以了,Sum = Sum+(int)AReplyStatus.BytesReceived ;来判断收到多少个包,IdIcmpClient1->ReceiveTimeout 设置超时间
Application->ProcessMessages();