{测试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;