![]() |
TClientSocket: auf Verbindung warten???
Hallo!
Ich habe einen Timer, der ständig versucht die Verbindung mit dem Server herzustellen. Dazu noch ein Paar Zeilen, die den Status des Sockets signalisieren.
Code:
procedure TForm1.Timer1Timer(Sender: TObject);
begin if not ClientSocket.Socket.connected then try ClientSocket.Open finally TryLogin //TryLogin ist eine Funktion, also unwichtig end; end; ... procedure TForm1.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); begin StatusBar1.Panels.Items[0].Text := 'Verbunden'; end; procedure TForm1.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin StatusBar1.Panels.Items[0].Text := 'Nicht verbunden'; end; Manchmal zeigt in des StatusBar "verbunen", obwohl der ServerSocket keine active Connections meldet und die Daten den Socket nicht erreichen. Was ist das? Warum passiert das? Wie halte ich die Verbindung permanent aktiv, auch wenn keine Daten fließen? Ich brauche eine sehr sichere Verbindung zum Server! Danke! |
Re: TClientSocket: auf Verbindung warten???
Hallo,
wenn ich mich recht entsinne kann ein Client die Verbindung verlieren ohne das das DisConnect-Ereignis ausgelöst wird. Sicher kriegt immer nur ein Server den DisConnect mit. Das ist ja auch nicht weiter tragisch da der Client es wieder merkt wenn er was zum Server schicken will, dann schaut er vorher kurz nach und verbindet sich ggf. wieder. Problematisch wirds nur wenn auch der server mal was an den Client schicken will und der ist weg. Ich benutze für ein ähnliches Problem bei mir quasi ne Doppelverbindung wo auf jeder Seite jeweils ein Client und ein server stehen die sich verbinden. Wenn dann die Verbindung abkackt kriegts wenigstens eine Seite mit. |
Re: TClientSocket: auf Verbindung warten???
HI,
hatte das Problem mal etwas anders gelöst. Wenn eine Verbindung einmal zustande gekommen ist, wird durch den Timer (1 sec.) eine kleine Message vom Client an den Server gesentet. Der muß die dann nur noch bestätigen, also im Prinzip spiegeln. Kommt die Antwort innerhalb eines plausiblen Zeitfensters, ist die Verbindung da. Andernfalls ist sie weg oder der Status des Sockets hat mir das bereits mitgeteilt. Grüße Kay |
Re: TClientSocket: auf Verbindung warten???
Hallo,
ich habe das Probelem wie folgt gelöst. Wenn Einer der beiden (also Client oder Server) die Verbindung kappt (bei mir immer bei Form.onDestroy) sendet dieser an den Clienten bzw. Server eine kurze Meldung, dass dieser nun Disconnected. Der Empfänger muss dann nurnoch die information weiterverarbeiten (client.free...) . Es wäre natürlich möglich, dass beide auf einmal Disconnecten...( :wall: ) aber hoffen wir das dies nicht passiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz