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;