Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: MIDAS TSocketConnection, Reconnect

  Alt 11. Sep 2014, 10:00
Ich hab das Problem auch in einer Delphi 6 Anwendung. Bei Abbruch der Verbindung wird der Error ausgelöst, was ich nutze um dem Nutzer im Client anzuzeigen, dass gerade keine Verbindung besteht. Hier müsste man eigentlich noch den Error genauer prüfen, aber mir ist es an der Stelle eigentlich egal, warum, hauptsache ich weiß, dass die Verbindung nicht mehr steht.

An dieser Stelle könnte dann auch ein Timer gestartet werden (ist bei mir nicht nötig, da eh einer läuft) der alle X Sekunden einen Reconnect versucht. In meinem Fall guckt er dazu in einer DB nach den Parametern für Host und Port, da es u.U. sein kann, dass ein anderer Server einspringt und der Client sich einfach mit diesem verbindet.

Delphi-Quellcode:
procedure TMain.ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
                                  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  if not ClientSocket.Active then
    LC.CreateWarnline;
  ErrorCode:=0;
end;

procedure TMain.TimerTimer(Sender: TObject);
begin
  //...

  //Da in meinem Fall der Server alle 30 sek. was schicken soll
  //prüfe ich u.a. im Timer, wie alt die letzte Nachricht ist.
  //So fällt ein Verbindungsabbruch auch ohne Error auf.

  if SecondsBetween(now,LastServerMessage) > 60 then
    if not ClientSocket.Active then
      begin
      ConnectToServer;
      end;

  if SecondsBetween(now,LastServerMessage) > 120 then
    begin
    ConnectToServer;
    end;
end;
Ralph
  Mit Zitat antworten Zitat