Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ping per WinAPI (https://www.delphipraxis.net/8231-ping-per-winapi.html)

CalganX 31. Aug 2003 16:56


Ping per WinAPI
 
Hi,
im Forum gibt es nur Indy-Möglichkeiten einen Ping auszuführen. Allerdings suche ich eine API-Lösung.

Wenn jemand eine kennt, wäre ich dankbar! ;)

Chris

PS: Wenn diese Möglichkeit auch unter C++ funktioniert, dann bin ich zufrieden. ;)

Chewie 31. Aug 2003 17:09

Re: Ping per WinAPI
 
Schau dir mal IcmpSendEcho und Verwandte an.

Alternativ benutz RawSockets und bau dir das ICMP-Paket selber zusammmen. Empfehlen würd ich aber erstere Methode.

CalganX 31. Aug 2003 17:10

Re: Ping per WinAPI
 
Hi Chewie,
werde ich sofort machen.

Alternativ habe ich bei The Code Project noch was gefunden. Allerdings ist das ziemlich viel Source.

Chris

negaH 31. Aug 2003 17:14

Re: Ping per WinAPI
 
Delphi-Quellcode:
function PortPresent(const URL: String; Port: DWord = 80): Boolean;
// URL can be like [url]www.enterwickler.com[/url] or an IP like 127.0.0.1
var
  S: TSocket;
  A: SOCKADDR_IN;
  W: TWsaData;
  H: pHostEnt;
begin
  Result := False;
  if WsaStartup(MakeWord(1, 1), W) = 0 then
  begin
    H := GetHostByName(PChar(URL));
    if H <> nil then
    begin
      FillChar(A, SizeOf(A), 0);
      A.sin_family := AF_INET;
      A.sin_addr.S_addr := PDWord(H.h_addr_list^)^;
      A.sin_port := htons(Port);
      S := Socket(AF_INET, SOCK_STREAM, 0);
      if S <> INVALID_SOCKET then
      begin
        Result := Connect(S, A, SizeOf(A)) = 0;
        CloseSocket(S);
      end;
    end;
  end;
  WSACleanup;
end;

CalganX 31. Aug 2003 17:36

Re: Ping per WinAPI
 
Hi Hagen,
wunderbar! Das ist die Ergänzung, zu dem was ich eigentlich wollte... :) Kannst du Gedanken lesen? :shock: ;)

Chris

Chewie 31. Aug 2003 17:48

Re: Ping per WinAPI
 
Zitat:

Zitat von Chakotay1308
Kannst du Gedanken lesen? :shock: ;)

Das frage ich mich auch. Ich versuche gerade einen Zusammenzuhang zwischen der Frage und Hagens Anntwort zu finden :gruebel:

CalganX 31. Aug 2003 17:49

Re: Ping per WinAPI
 
Hi,
es soll irgendwo prüfen, ob eine IP existiert und dann der Port.

Ein direkter Zusammenhang existiert aber nicht... ;)

Chris

negaH 1. Sep 2003 12:09

Re: Ping per WinAPI
 
Wieso ? Warum will man Pingen um danach festzustellen das man denoch keine Connection zum gewünschten Port aufbauen kann. Wenn man nur einfach pingt, dann weis man bei Erfolg das die IP angesprochen werden kann. Allerdings was nützt das im weiteren Verlauf? wenn der entsprechende Port beim Server zu ist. Also kann man gleich eine Connection aufbauen zur IP/URL + Port um festzustellen ob man connecten kann.

Ich habe somit keine Gedanken gelesen :) (schön wäre es) sondern einfach nur weiter gedacht.

Zudem, wird zB. über einen Router/Proxy gepingt so wird in den meisten Fällen eine Connection zum Provider aufgebaut, falls sie noch nicht vorhanden war. D.h. ein reguläres Ping sagt NICHTS darüber aus ob man online ist/war. Echtes Pingen macht nur Sinn wenn man die Verbindung analysieren will, eg. Routing/Tracing.

Gruß Hagen

PS: ein Ping ist nur unwesentlich schneller als ein Connect auf einen Port. Egel wie man es sieht, im Fehlerfalle wird ein Ping genauso lange Timeouts haben wie ein Connect. Im Erfolgsfalle wird ein Ping nur minimal schneller sein als ein Conmect. Also kann man doch gleich einen Connect versuchen.

MathiasSimmack 1. Sep 2003 12:11

Re: Ping per WinAPI
 
Zitat:

Zitat von negaH
Ich habe somit keine Gedanken gelesen :) (schön wäre es) sondern einfach nur weiter gedacht.

Is´ aber schon nah dran ... :wink:

Chewie 1. Sep 2003 12:12

Re: Ping per WinAPI
 
Na gut. Wenn ich irgendwann einmal fragen sollte, wie ich einen Kuchen backe, dann erwarte ich, von dir gesagt zu kriegen, wie ich den Kucken verzieren soll :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 Uhr.
Seite 1 von 3  1 23      

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