Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ping - ich kapiers trotz der vielen Threads nicht :-( (https://www.delphipraxis.net/6082-ping-ich-kapiers-trotz-der-vielen-threads-nicht.html)

Stanlay Hanks 28. Jun 2003 17:25


Ping - ich kapiers trotz der vielen Threads nicht :-(
 
Hallo Leute.
Also um ehrlich zu sein, ich schäme mich ein bisschen :oops:
Hier im Forum hab ich jetz so viel gesehen über Pings (z.B. hier)
Aber ich raffs nicht! :oops:

Also, mein Problem is folgendes: Ich möchte ein Netzwerk Chat Programm für nur zwei PCs schreiben. Wenn ein User seinen Computer anschaltet, soll das Programm gestartet werden und "nachschauen", ob das andere Programm zu erreichen ist. Wenn ich das (in den Millionen von Threads über dieses Thema :oops:) richtig mitgekriegt hab, kann/muss man das mit einem Ping machen. Nur hab ich absolut keine Ahnung, wie ich das machen kann und auch richtig auswerten. Vielleicht kann mir ja wer helfen. Danke schon mal!

Man liest sich, Stanlay

PS: Bevor ichs vergesse: Ich hatte vor, die ServerSocket und ClientSocket Komponenten zu verwenden (sind ziemlich alt glaub ich). Gibts da Sachen, die man ganz besonders anders machen muss, bei den Indys?

Christian Seehase 28. Jun 2003 17:39

Moin Stanlay,

eine Möglichkeit des Pings:

Du nimmst einen TidIcmpClient auf's Formular, trägst den Host ein, der angpingt werden soll (Name oder IP Adresse), und schaust im OnReply Event nach ob der Rechner geantwortet hat:

Delphi-Quellcode:
procedure TfrmMAIN.IdIcmpClient1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
  if AReplyStatus.ReplyStatusType = rsEcho then ShowMessage(AReplyStatus.FromIpAddress+' hat geantwortet');

end;

procedure TfrmMAIN.Button1Click(Sender: TObject);
begin
  idIcmpClient1.Host := 'localhost';
  idIcmpClient1.Ping;
end;

Stanlay Hanks 28. Jun 2003 17:43

Vielen Dank für die schnelle Antwort! :party:
Ich probier das gleich mal aus!

Stanlay Hanks 28. Jun 2003 18:11

Achja...was mir da noch einfällt: Ist es möglich bei Server abzufragen, ob er gerade angepingt wurde? (Und wenn mit welcher Komponente? :oops:)

Christian Seehase 28. Jun 2003 18:44

Moin Stanlay,

mit welcher Komponente: Nein.

Du kannst Dir ja auch die entsprechende Funktion aus der ICMP.DLL (Name ohne Gewähr ;-) ) selber importieren, und damit einen Ping ausführen.

Wenn ich nicht sehr irre kannst Du mit dem Ping auch nur feststellen ob der Rechner an ist, also Netzwerkseitig erreichbar aber nicht das was bestimmtes darauf läuft.

Stanlay Hanks 28. Jun 2003 18:48

Achso. Danke auf jeden Fall! Mir ging es bloß um folgendes: Wenn der andere Server zum Programmstart angepingt wird, aber nicht erreichbar ist, soll das Programm erkennen, falls sich der andere User später (nach meinem Programmstart) noch einloggt. Aber ich mach das jetz anders: Ich schicke einfach einen Text (z.B. #logon#), wenn das Programm gestartet wird und der andere Server erreichbar ist.

Danke nochmals!

Stanlay Hanks 28. Jun 2003 19:10

Zitat:

Zitat von Christian Seehase
..Wenn ich nicht sehr irre kannst Du mit dem Ping auch nur feststellen ob der Rechner an ist, also Netzwerkseitig erreichbar aber nicht das was bestimmtes darauf läuft.


Du irrst dich anscheinend nicht! :wink:... Ich wollte eigentlich mit dem Ping verhindern, dass immer dieser Socket Fehler kommt (wenn das andere Programm nicht aktiv ist). Ich habs so gemacht: Ich hab, wie du geschrieben hast, das mit dem Ping gemacht und falls dieses Reply Status DingsDa ein rsEcho ist, sollte der Server und der Client (auf meiner Seite) erst aktiviert werden. Aber Pustekuchen...:( Da kommt immer ein rsEcho zurück, wenn der andere Rechner an ist. Kann ich das nicht irgendwie anders prüfen? (möglichst ohne igrendwelche Dateien zwischenzuspeichern)

Danke schon mal.

Christian Seehase 28. Jun 2003 19:16

Moin Stanlay,

ich hab' mir darüber noch nicht viele Gedanken gemacht, deshalb ist das hier wohl nicht die optimalste Lösung:

Versuch' Dich doch zu connecten, aber in einem try/except Block.
Läuft das Programm in den Except Abschnitt ist die Verbindung schiefgegangen.

Stanlay Hanks 28. Jun 2003 19:19

:wall: Try - Except... Das gibts ja auch noch... vielen Dank. vielen Dank, vielen Dank! (Das war für die nächsten 3 Fragen, die bestimmt bald kommen :wink:)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:01 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