Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Datasnap Verbindung erneut aufbauen (https://www.delphipraxis.net/186406-datasnap-verbindung-erneut-aufbauen.html)

NickD 1. Sep 2015 09:49

Datasnap Verbindung erneut aufbauen
 
Hi Leute,
folgendes Problem:

Ich habe einen Datasnap-Server der Servermethoden bereitstellt, die eine Client-App unter Android aufruft.
Vor jedem Aufruf einer Servermethode prüfe ich die Verbindung mit einer TIdTCPClient-Komponente.
Sollte nun die Verbindung zum Server verloren gehen, wird nurnoch aus der lokalen Datenbank auf dem Gerät weiter gearbeitet.
Sobald wieder eine Verbindung besteht sollen aber wieder die Servermethoden verwendet werden und genau hier liegt dann das Problem.
Ich bekomme beim erneuten Aufruf einer Servermethode dann den Fehler "Verbindung wurde vom Peer zurückgesetzt" und manchmal auch "Zeitüberschreitung".
Ich habe schon versucht die SQLConnection aus der ClientModuleUnit neu zu connecten, leider macht das keinen unterschied.


Hier der Quellcode der Funktion, welche die Verbindung vor den Aufrufen prüft:

Delphi-Quellcode:
function TfrmMain.CheckServerConnection: Boolean;
var
  IniServer: TIniFile;
begin
  IniServer := TIniFile.Create(TPath.Combine(FDocumentPath,'Server.ini'));
  Result := False;
  try
    TCPCheckConnection.ReadTimeout := 2000;
    TCPCheckConnection.ConnectTimeout := 2000;
    TCPCheckConnection.Port := StrToInt(IniServer.ReadString('Server','Port',''));
    TCPCheckConnection.Host := IniServer.ReadString('Server','Hostname','');
    TCPCheckConnection.Connect;
    TCPCheckConnection.Disconnect;
    Result := True;
    if FOffline = True then
    begin
      FOffline := False;
      ClientModule1.SQLConnection1.Open;
    end;
    imgNoConnection.Visible := False;
  except
    FOffline := True;
    ClientModule1.SQLConnection1.Close;
    imgNoConnection.Visible := True;
    Result := False;
  end;
  IniServer.Free;
end;


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