![]() |
Ping mit Reaktionszeit
Hi,
Ich bin neu hier, hab heute euer Forum durchgesucht, da ich einen Code zum Pingen brauche. Ziel: Ein Programm, dass etwa 5-10 Ziele anpingt in einem Intervall von 10 Sekunden (mit Timer). Diese Ziele sind Nodes in unserem Netzwerk (z.B. 1. Router--->Proxy-----inet----->2. Router--->Server). Das Programm überprüft dann alle 10 Sekunden, bis wo die Verbindungen in Ordnung sind, damit wir bei einem Ausfall sofort sehen, wo der Fehler liegt. Die Reaktionszeit/Antwortszeit sollte auch angezeigt werden (in MS). Ich habe es mit dem IdIcmpClient versucht, das pingen geht, allerdings krieg ich mit MsRoundTripTime immer 0.
Delphi-Quellcode:
Auch wenn ich das bei IcmpClientReply mache kommt nur 0. :(
function TForm1.ping(host: string; lbl: string): Boolean;
begin IcmpClient.Host := host; try IcmpClient.Ping(); If IcmpClient.ReplyStatus.BytesReceived > 0 then begin TLabel(FindComponent(lbl)).Caption := 'OK ' + IntToStr(IcmpClient.ReplyStatus.MsRoundTripTime); TLabel(FindComponent(lbl)).Font.color := clGreen; end except TLabel(FindComponent(lbl)).Caption := 'FEHLER!' +IntToStr(IcmpClient.ReplyStatus.MsRoundTripTime); TLabel(FindComponent(lbl)).Font.color := clRed; end; end; Gut, dann hab ich folgenden Code versucht:
Delphi-Quellcode:
Aufruf:
type
IPAddr = DWORD; PICMP_ECHO_REPLY = ^ICMP_ECHO_REPLY; ICMP_ECHO_REPLY = packed record Address : ULONG; Status : ULONG; RoundTripTime : ULONG; DataSize : WORD; Reserved : WORD; Data : Pointer; end; PIP_OPTION_INFORMATION = ^IP_OPTION_INFORMATION; IP_OPTION_INFORMATION = packed record Ttl : byte; Tos : byte; Flags : byte; OptionsSize : byte; OptionsData : Pointer; end; function IcmpCreateFile : DWORD; stdcall; external 'icmp.dll'; function IcmpCloseHandle(const IcmpHandle : DWORD) : longbool; stdcall; external 'icmp.dll'; function IcmpSendEcho(const IcmpHandle : DWORD;const DestinationAddress : IPAddr;const RequestData : Pointer;const RequestSize : WORD;const RequestOptions : PIP_OPTION_INFORMATION;const ReplyBuffer : Pointer;const ReplySize : DWORD;const TimeOut : DWORD) : DWORD; stdcall; external 'icmp.dll';
Delphi-Quellcode:
Hab ich hier im Forum gefunden. Leider kommt immer die Nachricht "Gefunden", auch wenn es eine IP 100% nicht gibt :(
procedure TForm2.Button1Click(Sender: TObject);
var hICMP : DWORD; pierWork : PICMP_ECHO_REPLY; dwSize : DWORD; begin hICMP := IcmpCreateFile; if hICMP = INVALID_HANDLE_VALUE then exit; try dwSize := SizeOf(ICMP_ECHO_REPLY)+8; pierWork := AllocMem(dwSize); try if IcmpSendEcho(hICMP,MAKELONG(MAKEWORD(123, 123),MAKEWORD(123, 123)),nil,0,nil,pierWork,dwSize,1000) = 0 then begin ShowMessage('Nicht gefunden'); end else begin ShowMessage('Gefunden'); end; finally FreeMem(pierWork,dwSize); end; finally IcmpCloseHandle(hIcmp); end; end; Kann mir einer helfen? MfG |
Re: Ping mit Reaktionszeit
Zitat:
|
Re: Ping mit Reaktionszeit
Zitat:
MfG |
Re: Ping mit Reaktionszeit
doch aber wenn die zeit unter 1 ms fählt dann gibts nix mehr deshalb steht im Windows Ping ja auch <1ms
|
Re: Ping mit Reaktionszeit
Zitat:
Der Ping von meinem PC (Schweiz) zum Server in Wien dauert über Dos Ping gut 50-80 ms |
Re: Ping mit Reaktionszeit
Schau dir diesen
![]() |
Re: Ping mit Reaktionszeit
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz