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