Einzelnen Beitrag anzeigen

Xanadu

Registriert seit: 8. Mai 2005
Ort: Schwäbisch Gmünd
20 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: TClientSocket verbraucht Ports (Fehler 10055)

  Alt 3. Jul 2005, 04:01
Hi spitzley,

der Ordnunghalber würd ich beim Reconnecten im Fehlerfall aufräumen statt ständig nur weiter neu auf zu machen. Möglicherweise läuft der Client dann nicht mehr voll.

Und das gleiche würde ich bei der eigentlichen, abgebrochenen Verbindung auch mit ner Exception abfangen. Sprich: die alte Verbindung vor dem Reconnect auch zuerst schliessen bevor der Timer angemacht wird.

Im Weiteren würd ich den Timer langsam länger takten. Nachdem Du von mehr als einem Client sprichst feuerst Du sonst Deinen Server irgendwann nieder. Zwar ist sich jeder selbst der Wichtigste und will gleich wieder ran aber mit nem toten Pferd reitet es sich im Allgemeinen schlecht.

Delphi-Quellcode:
procedure TNetRouter.OnGateway1ReconnectServerTimer(Sender: TObject);
begin
  if FGateway1Activate and not(FGateway1Connected) then
    begin
      if FGateway1AutoReconnect then
        [b]try[/b]
          inc(FGateway1NoOfConnectRetries);
          Gateway1TCPClientSock.Open;
          [u]FGateway1ReconnectServerTimer.Interval:= 3000;[/u]
        [b]except
          HandleReConnectError;[/b]
        end;
      FGateway1ReconnectServerTimer.Enabled:=false;
      (Connect-Error schaltet Timer wieder ein)
    end;
end;

[b]Procedure TNetRouter.HandleReConnectError;
begin
  Gateway1TCPClientSock.Close;
  [u]FGateway1ReconnectServerTimer.Interval:= FGateway1ReconnectServerTimer.Interval + 1000;[/u]
end;[/b]
Have fun, Bernd
  Mit Zitat antworten Zitat