AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Sockets noch verbunden? Eine art ping....
Thema durchsuchen
Ansicht
Themen-Optionen

Sockets noch verbunden? Eine art ping....

Ein Thema von Jackie1983 · begonnen am 17. Mär 2008 · letzter Beitrag vom 21. Mär 2008
Antwort Antwort
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#1

Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 20:12
hi,

wie könnte man kurz und effektiv feststellen ob der client noch mit dem Server verbunden ist.
Weil es könnte ja mal passieren das jemand das Netzwerkkabel zieht.

Muss man das selber programmieren oder gibt es da villeicht schon fertige Methoden?
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 20:15
Der Serversocket hat das Ereignis OnClientDisconnect und der Clientsocket OnDisconnect.
Ich denke die Begriffe sind selbsterklärend.
Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#3

Re: Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 20:28
ein ping pong zu schreiben ist imho einfach. server sendet ein ping, das der client nach einer gewissen zeit mit einem pong erwidern sollte
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 20:36
Es geht aber ja nicht darum, ein Ping zu senden, sondern generell zu prüfen ob der Server und der Client noch verbunden sind. Da ist die Verwendung von OnClientDisconnect & OnDisconnect um einiges einfacher.

Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#5

Re: Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 20:39
Zitat von Fussball-Robby:
Der Serversocket hat das Ereignis OnClientDisconnect und der Clientsocket OnDisconnect.
Ich denke die Begriffe sind selbsterklärend.
Mfg
schon klar, dies wird aber nicht ausgelöst wenn z.b ein Netzwerkkabel gezogen wird...

Zitat von 1234588:
ein ping pong zu schreiben ist imho einfach. server sendet ein ping, das der client nach einer gewissen zeit mit einem pong erwidern sollte
Hast du vielleicht ein konkrete idee, weil alle daten die bei mir ankommen werden in einer jobliste geschrieben. Per Thread werden die jobs abarbeitet.
Also müste ich warten bis der job kommt und dann ein pong schicken. Das kann aber vielleicht, je nach jobs, dauern.
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#6

Re: Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 20:53
Zitat von Fussball-Robby:
Es geht aber ja nicht darum, ein Ping zu senden, sondern generell zu prüfen ob der Server und der Client noch verbunden sind. Da ist die Verwendung von OnClientDisconnect & OnDisconnect um einiges einfacher.

Mfg
der client kann nur ein pong senden bzw. ein ping erhalten, wenn er noch mit dem server verbunden ist.


Jackie1983, ich wuerde die ping pong geschichte parallel ablaufen lassen, sodass es nicht von anderen taetigkeiten abhaenigig ist. noch ein tipp, um zu wissen welcher client ein pong gesendet hat, kannst du ja zum ping eine zufaellige zeichenkette senden die der client erwidern muss.
Zitat:
ping edf27tgiu
pong edf27tgiu
vll. kannst du es ja auch mit der addresse des clienten irgendwie loesen, weiß ich nicht genau. hab mich einfach zu wenig damit befasst. mit der zufaelligen zeichenkette wurde es zumindest im irc protokoll geloest :o)
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Sockets noch verbunden? Eine art ping....

  Alt 17. Mär 2008, 21:21
Zitat von Jackie1983:
Hast du vielleicht ein konkrete idee, weil alle daten die bei mir ankommen werden in einer jobliste geschrieben. Per Thread werden die jobs abarbeitet.
Also müste ich warten bis der job kommt und dann ein pong schicken. Das kann aber vielleicht, je nach jobs, dauern.
Dann prüfst du beim Empfangen des Strings, ob er 'Ping' enthält, und sendest dann Pong zurück. Enthält er kein 'Ping', dann fügst du ihn in die Job-Liste ein.

Mfg
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Thomas83

Registriert seit: 7. Jan 2008
180 Beiträge
 
#8

Re: Sockets noch verbunden? Eine art ping....

  Alt 20. Mär 2008, 12:58
was meint ihr könnte man es so machen?
pseudocode
Delphi-Quellcode:
begin
  //Intervall einmal die minute
  ClientOnline := false;
  SendePing;
end;

...

ClientOnRead;
begin
  if is_pong then
    ClientOnline := true;
end;
  Mit Zitat antworten Zitat
Jackie1983

Registriert seit: 12. Mär 2007
486 Beiträge
 
#9

Re: Sockets noch verbunden? Eine art ping....

  Alt 20. Mär 2008, 22:51
oder gibt es eine bessere möglichkeit ein ping - pong umzusetzen....
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Sockets noch verbunden? Eine art ping....

  Alt 21. Mär 2008, 10:22
Das müsste ca. So aussehen:
Delphi-Quellcode:
//Server:
Procedure TForm1.Timer1Timer(Sender: TObject);
var i:Integer;
begin
  with ServerSocket1 Do
  begin
    for i:=0 to Socket.ActiveConnections Do
    begin
      Socket.SendText('PING');
    end;
  end;
end;

//Client:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  with ClientSocket1 do
  begin
    if Socket.Receivetext = 'PINGthen
    begin
      Socket.SendText('PONG');
    end else
    begin
      Jobliste.Lines.Add(Socket.ReceiveText);
    end;
  end;
end;
Der Rest dürfte nicht mehr schwer sein
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  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 08:50 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