AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Ping mit Reaktionszeit

Ping mit Reaktionszeit

Offene Frage von "rayj"
Ein Thema von rayj · begonnen am 18. Okt 2005 · letzter Beitrag vom 18. Okt 2005
 
rayj

Registriert seit: 18. Okt 2005
46 Beiträge
 
#1

Ping mit Reaktionszeit

  Alt 18. Okt 2005, 10:32
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:
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;
Auch wenn ich das bei IcmpClientReply mache kommt nur 0.

Gut, dann hab ich folgenden Code versucht:
Delphi-Quellcode:
  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';
Aufruf:
Delphi-Quellcode:
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;
Hab ich hier im Forum gefunden. Leider kommt immer die Nachricht "Gefunden", auch wenn es eine IP 100% nicht gibt

Kann mir einer helfen?

MfG
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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