AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Thread stürzt ab Indy TCPIP Client
Thema durchsuchen
Ansicht
Themen-Optionen

Thread stürzt ab Indy TCPIP Client

Ein Thema von Barthiboy · begonnen am 9. Jan 2015 · letzter Beitrag vom 13. Jan 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Thread stürzt ab Indy TCPIP Client

  Alt 9. Jan 2015, 10:24
Es gibt bei Exceptions kein "welche muss ich" sondern immer nur ein "welche kann ich" behandeln

Wenn du den InputBuffer (Instanz) löschst und fragst, ob es einen IOHandler (Instanz) gibt, wie kommst du darauf, dass es auch einen InputBuffer geben muss?

So wäre es schon mal bis zum Schluss geprüft:
Delphi-Quellcode:
if { Assigned( FFoo ) and } Assigned( FFoo.IOHandler ) and Assigned( FFoo.IOHandler.InputBuffer ) then
  FFoo.IOHandler.InputBuffer.Clear;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#2

AW: Thread stürzt ab Indy TCPIP Client

  Alt 9. Jan 2015, 10:39
Also ich habe die Abfrage jetzt mal so rein.
Allerdings immer noch mit dem gleichen Effekt.
Woher weiß ich welche Exceptions ich behandeln kann?

Zitat:
Wenn du den InputBuffer (Instanz) löschst und fragst, ob es einen IOHandler (Instanz) gibt, wie kommst du darauf, dass es auch einen InputBuffer geben muss?
Ich frag doch zuerst und lösche dann, oder steh ich jetzt voll daneben!?

Edit:

Ich habe jetzt FIdTCPClient.IOHandler.InputBuffer.Clear; komplett rausgeschmissen.
Der Fehler tritt jetzt wesentlich weniger auf.
Aber bei excesivem Steuerung reset, Neuanlauf usw. bekomme ich immer noch folgende Meldung:
Socket-Fehler # 10054Die Verbindung wurde von Peer zurückgesetzt.

Also muss ich das wohl irgendwie doch noch abfangen

Geändert von Barthiboy ( 9. Jan 2015 um 10:56 Uhr)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#3

AW: Thread stürzt ab Indy TCPIP Client

  Alt 9. Jan 2015, 11:01
ich habe hier einen ähnlichen Fall gefunden:
http://www.delphipraxis.net/163393-i...-umleiten.html

In dem letzten Eintrag steht wohl die Lösung.
Aber nachvollziehen kann ich das noch nicht.
Vor allem frage ich vorher ab ob die Verbindung überhaupt besteht.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Thread stürzt ab Indy TCPIP Client

  Alt 9. Jan 2015, 11:24
Deine Execute-Methode ist irgendwie zu lang und unhandlich ... (würde ich so nie implementieren). Teile die auf, dann wird das wesentlich einfacher:

Delphi-Quellcode:
TFoo.Execute;
var
  LClient : TClient;
begin
  LClient := nil;
  try
    while not Terminated do
    try
      // Eine Client-Instanz garantieren
      if not Assigned( LClient ) then
      begin
        LClient := TClient.Create;
      end;
      
      ExecuteOnCLient( LClient );

    except
      on E: EIdSpecialException do
      begin
        // Loggen der Exception

       // Client benötigt nur einen Reset
       LClient.Reset;
      end;
      on E: EIdException do
      begin
        // Loggen der Exception
       
       // Zerstören der Client-Instanz
       FreeAndNil( LClient );
      end;
      on E: Exception do
      begin
        // Loggen der Exception
        
        raise; // Exception raisen -> der Thread wird beendet
      end;
    end;
  finally
    LClient.Free;
  end;
end;

procedure TFoo.ExecuteOnCLient( AClient : TClient );
begin
  // Hier geht es jetzt los mit der eigentlichen Verarbeitung
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 9. Jan 2015 um 11:33 Uhr)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#5

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 06:09
Danke für deine Antworten.

ich habe noch folgende Probleme:
TIdTCPClient.Reset gibt es bei mir nicht v.10.6.0.504.
EIdSpecialException gibt es bei mir nicht v.10.6.0.504. Oder ich kanns nicht finden.

Aber sonst sieht es so aus als hättest du mir viel weiter geholfen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 08:05
Und wo hast du TFoo und TClient gefunden?

Der Code ist nur dazu da, das Prinzip zu erläutern und keine CopyPaste Lösung. Anfangen würde ich auch zunächst auch damit, bei jeder Indy Exception EIdException den Client einfach aus dem Speicher zu entfernen.

Dann schaut man sich das Log an und die aufgetretenen Exceptions und prüft, bei welcher Exception man noch etwas retten könnte. Allerdings wäre es mir auch egal, denn wenn der Betrieb so gewährleistet werden kann ... who cares? Da bräuchte ich schon bessere Gründe.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Barthiboy

Registriert seit: 4. Nov 2011
36 Beiträge
 
#7

AW: Thread stürzt ab Indy TCPIP Client

  Alt 12. Jan 2015, 08:15
OK. Prinzip is jetzt klar.
Du hast mir viel geholfen. Vielen Dank.

Die Verbindungsprobleme, die ich hervorrufen konnte sind somit alle beseitigt.
Jetzt muss ich mir nur überlegen, was ich bei einer Zugriffsverletzung usw. mache.
Aber das soll (bis jetzt) mal noch nicht dein Problem sein
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 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