![]() |
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. ;) |
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. |
Re: Ping per WinAPI
Hi Chewie,
werde ich sofort machen. Alternativ habe ich bei ![]() Chris |
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; |
Re: Ping per WinAPI
Hi Hagen,
wunderbar! Das ist die Ergänzung, zu dem was ich eigentlich wollte... :) Kannst du Gedanken lesen? :shock: ;) Chris |
Re: Ping per WinAPI
Zitat:
|
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 |
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. |
Re: Ping per WinAPI
Zitat:
|
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 16:56 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