Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#1

Socket Error 10054 Connection reset by peer - wie behandeln?

  Alt 5. Nov 2015, 11:57
Huhu Leute,

ich habe ein Programm, mit dem ich via TCP (Indy) Anfragen an ein paar Geräte sende (keine PCs, sondern Modbus->TCP Gateways), um Daten von diesen anzufordern. Das klappt auch alles recht gut, bis auf bei einem der Gateways. Dieses kommt, teils nach wenigen Minuten, teils erst nach einem Tag, auf die Idee die Connection zu resetten, was zu o.g. Meldung bei mir führt.
Ab dieser Meldung kann ich mit dem Gateway nicht mehr kommunizieren. Als Lösung dafür habe ich es so programmiert, dass ich bei Auftreten des Fehler die komplette TIdTCPClient Instanz lösche und neu instanziiere, um einen ganz frischen neuen Socket zu bekommen. Leider gibt es mit der neuen Instanz genau dasselbe Problem: Es geht sofort mit Error 10054 weiter.

Aber! Starte ich mein Programm neu, geht es völlig problemlos!

Was macht ein Programmneustart mehr, was ein IdTCPClient.Free; nicht zu leisten vermag? An den Gateways kann ich leider nichts machen. Ich muss das Problem in meinem Programm behandeln, was ja scheinbar möglich sein muss, wenn ein Neustart (nur des Programms, nicht des ganzen PCs) funktioniert.

Ein verknüpftes Problem: Ich fange den Fehler in einem try..except ab. Aber das Fehlerfenster wird trotzdem generiert, auch außerhalb der IDE. Wie kann ich das unterdrücken? Mein Programm soll nachher 24/7 unbeaufsichtigt laufen, und da wäre es extrem unschön wenn es diese Meldungen ansammelt.


Besten Dank im Voraus!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat