Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCPClient/TCPServer: Server fällt aus, Clients warten??? (https://www.delphipraxis.net/40862-tcpclient-tcpserver-server-faellt-aus-clients-warten.html)

romber 22. Feb 2005 10:41


TCPClient/TCPServer: Server fällt aus, Clients warten???
 
Hallo Leute!

Ich muss euch noch n'bißchen mit TCP Sockets belästigen.
Wenn man z. B. eine einfachste TCP-Connection mit TTcpServerSocket und TTcpClientSocket aufbaut und dann der Serverteil, warum auch immer, abstürzt, bleibt den ClientSocket "verbunden". Netürlich bleibt er in Wirklichkeit nicht verbunden, da der Server offline ist. Ich habe aber einen Timer, der überprüfft ständig, ob der Client noch online ist:

Server:

Code:
...
ServerSocket1.Port := 12345;
ServerSocket.Open;
..
Client:

Code:
...
ClientSocket1.Host := 'xxx.xxx.xx.x';
ClientSocket1.Port := 12345;
ClientSocket1.Open;
...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ClientSocket1.Socket.Connected then
StatusBar1.Panels.Items[0].Text := 'Verbunden'
else
StatusBar1.Panels.Items[0].Text := 'Nicht verbunden';
end;
...
Ich kille den Serverteil über Task-Manager aber die Connected-Eigenschaft des Clients bleibt auf True. Das passiert wahrscheinlich, weil des ServerSocket nicht geschlossen wurde, glaube ich. Kann man es irgendwie vermeiden?

Ich möchte es so machen, dass die Clients IMMER auf den Server warten, wenn der mal offline ist.
Wenn Client ausgeführt wird und Server offline ist, ist es natürlich kein Problem - man löst es einfach mit einem Timer, der mit regelmäßigen Abständer zu connecten versucht. Was ist zu tun, wenn Server mal plözlich ausfällt? Wie lasse ich die Clients automatisch wieder connecten, wenn Server wieder online ist?

Danke!

MfG,
Ralf

alcaeus 22. Feb 2005 10:44

Re: TCPClient/TCPServer: Server fällt aus, Clients warten???
 
Hallo romber,

sende ein regelmäßiges Ping-Paket an den Server, und wenn innerhalb einer bestimmtne Zeitspanne nichts zurückkommt, dann setzt du das Socket auf False und aktivierst den Timer für die automatische Verbindung (der der auch läuft, sobald das Programm startet).

Greetz
alcaeus

Fourcorner 22. Feb 2005 11:53

Re: TCPClient/TCPServer: Server fällt aus, Clients warten???
 
Hallo,

beim Server gibt es "OnException". Vielleicht wird dieser ausgeführt, wenn der Server (nicht richtig) geschlossen wird. Anderst, schick doch einfach, wenn das Form beendet wird eine Nachricht an der Clienten, dass dieser jetzt disconnecten soll.

alcaeus 22. Feb 2005 11:56

Re: TCPClient/TCPServer: Server fällt aus, Clients warten???
 
Zitat:

Zitat von Fourcorner
beim Server gibt es "OnException". Vielleicht wird dieser ausgeführt, wenn der Server (nicht richtig) geschlossen wird.

Serverseitige Ereignisse bringen nicht viel.

Zitat:

Zitat von Fourcorner
Anderst, schick doch einfach, wenn das Form beendet wird eine Nachricht an der Clienten, dass dieser jetzt disconnecten soll.

Tja, nur dass wenn der Server über den Taskmanager hinterrücks abgeschossen wird, dann wird gar kein Code mehr ausgeführt, also auch nicht jener, welcher dem Client sagt dass der Server jetzt offline ist ;)

Greetz
alcaeus

romber 22. Feb 2005 14:27

Re: TCPClient/TCPServer: Server fällt aus, Clients warten???
 
Danke! Werde ich versuchen.


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