Eigentlich habe ich nur die 10er installiert. Am besten installier ich es nochma neu.
Und geht es eigentlich mit
indy schneller als mit dem code den ich habe? wenn nicht kann ichs mir ja eigentlich sparen
Aber 30-40sec für 5 pings find ich viel zu lang, so max. 10sec sollte es dauern.
Ahja btw, hier die funktion vom ping, vlt kann man da irgendwo timeout zeit einstellen oder so?
ich blick da nicht so ganz durch.
Delphi-Quellcode:
function GetRTTAndHopCount(DestIpAddress:DWORD; HopCount :pointer; MaxHops: DWORD;
RTT : pointer):boolean;
stdcall;
external '
iphlpapi.dll';
function ping(host:
string;
var hopCount, RTT:DWORD;
var ipAd:
string):DWORD;
// by retnyg
// returns 0 is successfully, otherwise errorcode
// overwrites values hopcount, rtt, and ipad
// hopcount: number of hops
// rtt: roundtrip time
// ipAd: numerical ip-value, if used with a hostname
function GetIPAddress(
const HostName:
string):
string;
var
R: Integer;
WSAData: TWSAData;
HostEnt: PHostEnt;
Host:
string;
SockAddr: TSockAddrIn;
begin
Result := '
';
R := WSAStartup($0101, WSAData);
if R = 0
then
try
Host := HostName;
if Host = '
'
then
begin
SetLength(Host, MAX_PATH);
GetHostName(@Host[1], MAX_PATH);
end;
HostEnt := GetHostByName(@Host[1]);
if HostEnt <>
nil then
begin
SockAddr.sin_addr.S_addr := Longint(PLongint(HostEnt^.h_addr_list^)^);
Result := inet_ntoa(SockAddr.sin_addr);
end;
finally
WSACleanup;
end;
end;
var ip: DWORD;
begin
result:=0;
hopCount:=0;
RTT:=0;
ipAd := GetIPAddress(host);
ip := inet_addr(@ipAd[1]);
if not GetRTTAndHopCount(
ip, @hopCount, 30, @RTT)
then result:=GetLastError;
end;