AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte LuckiePing

LuckiePing

Ein Thema von Luckie · begonnen am 19. Mär 2006 · letzter Beitrag vom 2. Dez 2010
Antwort Antwort
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: LuckiePing

  Alt 26. Aug 2010, 14:46
Hallo Speedy08,

ich bin zwar nicht der Luckie, ich hab es mir aber trotzdem mal angeschaut. Dadurch, dass die Sourcen dabei sind, kannst du dir ja die EXE selber neu bauen. Du brauchst nur in der Unit retPing.pas in der function ICMPPing(Ip: DWORD): boolean; in der Zeile DW := IcmpSendEcho(Handle, in_addr(Ip), nil, 0, nil, @rep, 128, 0); aus dem letzten Parameter (der ist zuständig für den TimeOut aus der 0 z.B. eine 100 machen (= 100 ms).

Dann scheint es schon zu Funktionieren.

Wenn man es Debuggen möchte kann man sich auch noch etwas mehr Infos dazu holen. Einfach folgendes noch nach dieser Zeile einfügen:
Delphi-Quellcode:
  if DW = 0 then
  begin
    DW := GetLastError;
    OutputDebugString(PChar(SysErrorMessage(DW) + ' -> ' + IntToStr(DW)));
  end;
Mit hilfe der folgenden Tabelle die ich von hier habe, kann man aus den Codes wie ich finde noch etwas mehr lesen:
Delphi-Quellcode:
   Const IP_SUCCESS = 0
   Const INADDR_NONE = &HFFFFFFFF
   Const IP_BUF_TOO_SMALL = (11000 + 1)
   Const IP_DEST_NET_UNREACHABLE = (11000 + 2)
   Const IP_DEST_HOST_UNREACHABLE = (11000 + 3)
   Const IP_DEST_PROT_UNREACHABLE = (11000 + 4)
   Const IP_DEST_PORT_UNREACHABLE = (11000 + 5)
   Const IP_NO_RESOURCES = (11000 + 6)
   Const IP_BAD_OPTION = (11000 + 7)
   Const IP_HW_ERROR = (11000 + 8)
   Const IP_PACKET_TOO_BIG = (11000 + 9)
   Const IP_REQ_TIMED_OUT = (11000 + 10)
   Const IP_BAD_REQ = (11000 + 11)
   Const IP_BAD_ROUTE = (11000 + 12)
   Const IP_TTL_EXPIRED_TRANSIT = (11000 + 13)
   Const IP_TTL_EXPIRED_REASSEM = (11000 + 14)
   Const IP_PARAM_PROBLEM = (11000 + 15)
   Const IP_SOURCE_QUENCH = (11000 + 16)
   Const IP_OPTION_TOO_BIG = (11000 + 17)
   Const IP_BAD_DESTINATION = (11000 + 18)
   Const IP_ADDR_DELETED = (11000 + 19)
   Const IP_SPEC_MTU_CHANGE = (11000 + 20)
   Const IP_MTU_CHANGE = (11000 + 21)
   Const IP_UNLOAD = (11000 + 22)
   Const IP_ADDR_ADDED = (11000 + 23)
   Const IP_GENERAL_FAILURE = (11000 + 50)
   Const IP_PENDING = (11000 + 255)
   Const PING_TIMEOUT = 500
@Luckie:
Ich weiß ja, dass diese Unit's nicht von Dir sind, dennoch würde ich hier bei anders vorgehen:
Delphi-Quellcode:
function ICMPPing(Ip: DWORD): boolean;
var
  Handle : THandle;
  DW : DWORD;
  rep : ICMP_ECHO_REPLY;// hier nicht ein Array von 1..128 of Byte
begin
  result := false;
  Handle := IcmpCreateFile;
  if Handle = INVALID_HANDLE_VALUE then Exit;
  DW := IcmpSendEcho(Handle, in_addr(Ip), nil, 0, nil, @rep, sizeOf(rep), 100); // hier immer sizeOf(rep) anstatt fix die Zahl 128
  Result := (DW <> 0);
  if DW = 0 then
  begin
    DW := GetLastError;
    OutputDebugString(PChar(SysErrorMessage(DW) + ' -> ' + IntToStr(DW)));
  end;
  
  IcmpCloseHandle(Handle);
end;
Aber das nur anbei. Es funktioniert ja auch so wie es ist, wenn man noch den TimeOut hinzufügt.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Speedy08

Registriert seit: 22. Jan 2007
4 Beiträge
 
#2

AW: LuckiePing

  Alt 26. Aug 2010, 15:36
Hallo Christian,

vielen Dank für den Tipp, genaus das war es!

Viele Grüsse
Matthias
  Mit Zitat antworten Zitat
rakekniven

Registriert seit: 4. Apr 2008
Ort: Franken
82 Beiträge
 
Delphi XE5 Professional
 
#3

AW: LuckiePing

  Alt 2. Dez 2010, 09:30
Hi,

kann man den Wert für Timeout generell auf 100 setzen oder sollte man auf das OS prüfen und dies nur bei Win 7 tun?

Habe gerade den Wert auf 100 geändert und es tut auch auf Win XP.

Gruß
Frag google
  Mit Zitat antworten Zitat
Antwort Antwort

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 18:20 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