![]() |
Server anpingen
Hallo,
ich wollte mal Fragen wie ich überprüfen kann ob ein Server online oder offline ist? Mit Ping glaub ich aber wie "pinge" ich mit Delphi? |
Hi,
ich weiss nich, ob dir das hier was bringt, aber kannst ja mal schauen! Auf der Seite wird erklärt, wie man DOS-Befehle mit Delphi nutzt! Und dann kannst du ja einfach "ping <IP>" angeben. Hier die Seite: ![]() bis dann Trouble_Maker |
Es gibt auch eine Komponente bei den Indys ... IDEcho glaub ich ...
|
Ok aber das für NT-Systeme läuft auch nur auf NT-System...
Sollte aber auf beiden laufen... |
ICMP komponente von indy clients
hilfe von indy ambesten zu rate ziehen mein icmp kompo dings auf dem form hab ich "ping" benannt. port: 0 und protocol: 1 timeout: 6000 beispielcode:
Delphi-Quellcode:
:bounce1:procedure TForm1.pingReply(ASender: TComponent; // wird ausgelöst wenn reply kommt const AReplyStatus: TReplyStatus); begin Label1.Caption := 'online'; end; procedure TForm1.Timer1Timer(Sender: TObject); // ping! begin try ping.Ping except on Exception do Exit; end; end; |
Wo gebe ich die URL ein?
|
Moin Smax,
kleiner Tip: Zieh' Dir mal eine TidIcmpClient Kompo auf ein Formular und schau Dir dann mal den Objekt Inspektor an. |
Sorry aber wo finde ich den TidIcmpClient Komponenten?
|
Moin Smax,
unter den "Indy Clients" (wie der Name schon vermuten lässt ;-) ) |
Ich hab jetzt eine andere sehr gute Lösung gefunden!
Dazu benutze ich den Befehl:
Delphi-Quellcode:
Was muss ich da bei uses schreiben, weil jetzt wird ja de Fehler angezeigt:
IdHTTP1.Get(edit1.text, responseStream);
[Error] Unit1.pas(33): Undeclared identifier: 'IdHTTP1' |
Also ich habe folgendes Problem mit dem IdIcmpClient.
Egal was ich für eine IP oder was für einen Port ich angebe, er bekommt immer einen Reply. Hat jemand ne Idee woran das liegen kann? |
also ich benutze ServerSocket und ClientSocket und überprüfe
mit dem Client lediglich ob der ServerSocket.active=true ist. Dies ist eine einfache Methode darf jedoch nicht zu häufig nacheinander ausgeführt werden, weil das System dann ausrastet :) Ich hab deswegen einen Timer benutzt, der alle 3-5 Sekunden prüft ob active=true ist, wenn nicht soll er halt versuchen die Verbindung aufzubauen. Die Fehler fange ich dann mit ErrorCode=0 ab. Gruß Minz |
Was soll ich nun bei:
Delphi-Quellcode:
schreiben, wenn ich Indy verwenden will?
uses
|
Moin Robert,
und was enthält dann AReplyStatus.ReplyStatusType? Wenn das nicht rsEcho ist, ist der Ping Versuch wohl fehlgeschlagen. |
Danke das in meinem Thread so gut meine Fragen beantwortet werden!
|
keine Ahnung sorry smax, warum benutzt du nicht
TIdIcmpclient wie oben beschrieben, die Methode ist doch wirkllich einfach, nicht viel Schreibarbeit. |
...dachte ich zumindest.
@Christian if ReplyStatus.ReplyStatusType=rsEcho then ... funktioniert auch immer, egal welcher Port :( oder darf man =rsEcho nicht so einfach schreiben? |
Moin Minz,
seltsam, bei mir geht's so. |
Sowas hass ich wie die Pest :mrgreen:
bei dem einen funzt es bei dem anderen net, das ist Diskriminierung :bounce1: |
Moin Smax,
sorry :oops: Vielleicht hättest Du Dein Posting nicht einleiten sollen mit "Ich hab' jetzt eine Lösung gefunden" ;-) Wenn Du ganz normal eine TIdHTTP Kompo auf Dein Formular gezogen hast, dann dürfte Dir keine Unit fehlen, da die automatisch mit eingebunden wird. Da gibt's jetzt noch zwei Möglichkeiten: Entweder Du willst die Kompo aus einer Unit heraus benutzen, in der sie nicht deklariert ist, dann musst Du diese mit einbinden, oder aber Du willst sie aus einer Prozedur/Funktion heraus benutzen, die keine Methode des Formulares ist. Dann kannst Du entweder die Prozedur/Funktion mit als Methode des Formulares deklarieren, oder Du schreibst den Namen des Formulares mit davor (z.B. Form1.IdHTTP1.Get(...). |
Ok THX!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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