Delphi-PRAXiS
Seite 17 von 17   « Erste     7151617   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   LuckiePing (https://www.delphipraxis.net/65675-luckieping.html)

Luckie 24. Sep 2008 21:48

Re: LuckiePing
 
Es kommt eben immer darauf an, wie die Rechner reagieren und wie viele es sind. Und was meinst mit mit "Bereich bis 255"?

Mackhack 24. Sep 2008 22:25

Re: LuckiePing
 
Zitat:

Zitat von Luckie
Es kommt eben immer darauf an, wie die Rechner reagieren und wie viele es sind. Und was meinst mit mit "Bereich bis 255"?

Wahrscheinlich der IP Wertebereich!

Speedy08 26. Aug 2010 13:19

AW: LuckiePing
 
Hallo Luckie,

hab bisher für Netzwerkdiagnosen immer gern dein Tool benutzt. Allerdings mag es unter Windows 7 nicht mehr funktionieren. Hast du eine Idee, woran es liegt. Selbst wenn ich es mit Adminrechten starte, kommt kein Resultat zu stande.

Viele Grüsse
Matthias

ChrisE 26. Aug 2010 14:46

AW: LuckiePing
 
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
Delphi-Quellcode:
function ICMPPing(Ip: DWORD): boolean;
in der Zeile
Delphi-Quellcode:
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

Speedy08 26. Aug 2010 15:36

AW: LuckiePing
 
Hallo Christian,

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

Viele Grüsse
Matthias

rakekniven 2. Dez 2010 09:30

AW: LuckiePing
 
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ß


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 Uhr.
Seite 17 von 17   « Erste     7151617   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz