1,593
社区成员
发帖
与我相关
我的任务
分享
{测试IP地址能否PING通}
function ping(url: string): Boolean;
var
i: Integer;
rst: Boolean;
err: String;
icmpClient: TIdICMPClient;
begin
i:= 0;
rst:= False;
icmpClient:= TIdICMPClient.Create(nil);
icmpClient.ReceiveTimeout:= 500;
icmpClient.Host:= url;
icmpClient.PacketSize:= 1024;
//ABuffer := url+ StringOfChar(' ', 255);
while (not rst) and (i<3) do
begin
inc(i);
try
icmpClient.Ping();
Application.ProcessMessages;
if (icmpClient.ReplyStatus.FromIpAddress = url) then
begin
rst:= True;
end
else
begin
rst:= false;
sleep(10);
end;
except
on e: Exception do
begin
err:= e.Message;
//Socket Error # 10040 Message too long.是ping不通时的正常超时异常
if pos('10040',err)=0 then
Logger.Log(url+' Ping异常:'+ err);
rst:= False;
sleep(10);
end;
end;
end;
Result:= rst;
icmpClient.Free;
end;