AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Ping - ich kapiers trotz der vielen Threads nicht :-(
Thema durchsuchen
Ansicht
Themen-Optionen

Ping - ich kapiers trotz der vielen Threads nicht :-(

Ein Thema von Stanlay Hanks · begonnen am 28. Jun 2003 · letzter Beitrag vom 28. Jun 2003
Antwort Antwort
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#1

Ping - ich kapiers trotz der vielen Threads nicht :-(

  Alt 28. Jun 2003, 17:25
Hallo Leute.
Also um ehrlich zu sein, ich schäme mich ein bisschen
Hier im Forum hab ich jetz so viel gesehen über Pings (z.B. hier)
Aber ich raffs nicht!

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 ) 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?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#3
  Alt 28. Jun 2003, 17:43
Vielen Dank für die schnelle Antwort!
Ich probier das gleich mal aus!
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#4
  Alt 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? )
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#6
  Alt 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!
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#7
  Alt 28. Jun 2003, 19:10
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! ... 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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#9
  Alt 28. Jun 2003, 19:19
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 )
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:15 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