AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ping per WinAPI

Ein Thema von CalganX · begonnen am 31. Aug 2003 · letzter Beitrag vom 8. Jan 2004
Antwort Antwort
Seite 1 von 3  1 23      
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#1

Ping per WinAPI

  Alt 31. Aug 2003, 17:56
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.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Ping per WinAPI

  Alt 31. Aug 2003, 18:09
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Ping per WinAPI

  Alt 31. Aug 2003, 18:10
Hi Chewie,
werde ich sofort machen.

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

Chris
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: Ping per WinAPI

  Alt 31. Aug 2003, 18:14
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;
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Ping per WinAPI

  Alt 31. Aug 2003, 18:36
Hi Hagen,
wunderbar! Das ist die Ergänzung, zu dem was ich eigentlich wollte... Kannst du Gedanken lesen?

Chris
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Ping per WinAPI

  Alt 31. Aug 2003, 18:48
Zitat von Chakotay1308:
Kannst du Gedanken lesen?
Das frage ich mich auch. Ich versuche gerade einen Zusammenzuhang zwischen der Frage und Hagens Anntwort zu finden
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Ping per WinAPI

  Alt 31. Aug 2003, 18:49
Hi,
es soll irgendwo prüfen, ob eine IP existiert und dann der Port.

Ein direkter Zusammenhang existiert aber nicht...

Chris
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Ping per WinAPI

  Alt 1. Sep 2003, 13:09
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.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#9

Re: Ping per WinAPI

  Alt 1. Sep 2003, 13:11
Zitat von negaH:
Ich habe somit keine Gedanken gelesen (schön wäre es) sondern einfach nur weiter gedacht.
Is´ aber schon nah dran ...
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Ping per WinAPI

  Alt 1. Sep 2003, 13:12
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
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:47 Uhr.
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