Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkennen? (https://www.delphipraxis.net/52335-%5Bindy%5D-tidpop3-wie-den-verbindungsstatus-sicher-erkennen.html)

meolus 28. Aug 2005 10:05


[INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkennen?
 
Hallo Leute ich schreibe schon längere Zeit an einem POP3-Mail-Client. Seitdem ich die INDY 10 Komponenten verwende häuft sich reproduzierbar der Fehler "Socket Error # 10054 Connection reset by peer". Häufig aber auch ohne wirklich ersichtlichen Grund (wobei ich denke, dass dann kurz doch die Inet-Leitung weg ist ohne das KeepAlive funktioniert hat und ich einen realen "Connection reset by peer" habe, in der Regel sind die bei mir aber Hausgemacht und kein wirklicher connection reset by peer) :-/
Wie kann ich diese Verbindungsabbrücher Verhindern?

Ich benutze zwar IdPOP3.KeepAlive; in einem Timer welcher alle paar Sekunden ausgelöst wird, aber dies scheint nicht so recht zu helfen. Überdies scheint die Abfrage des boolischen Properties "IdPOP3.Connected" nicht immer ganz korrekt zu sein. So erhalte ich teils auch auch den obigen Fehler, obwohl Indy meint es sei verbunden und ich absichtlich die Leitung hardwaremäßig gekappt habe!
Wie kann ich sicher feststellen, ob ich (noch) verbunden bin oder nicht?
Zudem bekommt das Indy dann auch nicht mit, dass nach einstecken des Kabels doch wieder eine Verbindungbesteht und er sich ggf. nur neu verbinden müsste oder so.

EDIT:
"IdPOP3.CheckForGracefulDisconnect(true);" was ich nach der Beschreibung evtl. noch erwartet hätte, dass es helfen könnte, erkennt auch den Verbindungsabbruch nicht! Gibt keine Exception aus und ändert auch nicht den Onlinestatus der POP3-Komponente :-/

SirThornberry 28. Aug 2005 10:30

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne
 
hast du schon versucht ob die Verbindungsabbrüche nur bei einem bestimmten Server auftreten? Warum hast du überhaupt auf Indy10 geupdated wenn Indy9 funktioniert hat?

meolus 28. Aug 2005 10:44

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne
 
Nein, die Verbindungsabbrüche habe ich bei verschiedenen Servern! (FreeMailer und privater Server) Die Verbindungsabbrüche (Connection reset by peer) kommen manchmal in einer stundenlangen Verbindung nicht, manchmal aber schon nach Sekunden. Reproduzieren lässt sich das ganze durch ziehen des LAN-Kabels recht gut :)
Das eigentliche Problem an der Sache ist, dass man Programm sich auf die Property "IdPOP3.Connected" verlässt, aber diese selbst nach der Connection reset by peer-Exception immer noch true ist. Daher werde ich dann fortlaufend mit diesen Exceptions zu gespamt was sogar den PC fast völlig auslastet und man das Programm auf Grund von immer neu auf poppenden Exceptions gar nicht mehr regulär beenden kann.
Daher die Frage, wie kann ich wirklich SICHER feststellen, ob die Komponente TIdPOP3 noch verbunden ist, da Connected unzuverlässig ist!

Upgedated auf Indy 10 habe ich wegen zahlreichen Bugs und aus dem Grund, dass ewig keine neue Indy 9 Version raus kam. Soweit funktioniert Indy 10 auch gut. Viele der vorher bestehnden Bugs sind weg, doch diese Exceptions bei Connection reset by peer nerven einfach, da selbst nach dieser Exception die Connected-Property nicht geändert wird. :-/

Die Property "Connected" kann ich nicht einfach ändern, da dann der Fehler kommt: "Der linken Seite kann kein Wert zugewiesen werden!". Zudem weiß ich auch nicht genau, wie man auf speziell diese Exception reagieren könnte. Aber haupt Problem ist, dass "Connected" nicht den wahren Zustand anzeigt und ich keine andere Möglichkeit kenne/finde den realen Zustand der Komponente zu erhalten :(

SirThornberry 28. Aug 2005 12:35

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne
 
ich würde das ganze aber nicht auf die Indies schieben, wenn das Netzkabel gezogen wird, woher soll dann die Komponente wissen das die Verbindung weg ist, das kann frühestens festgestellt werden wenn wieder kommuniziert werden soll (weil ja dann die Kommunikation fehlschlägt)

meolus 28. Aug 2005 13:05

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne
 
Ich schiebe es ja nit auf die Indy-Komponenten. Das mit dem Netzwerkkabel war ja nur um deutlich zu machen, wie ich z.B. diese Fehlermeldungen bekomme. Das "Connection reset by peer" bekomme ich ja auch durchaus nach einiger Zeit bei ansonsten blendend laufender Internetverbindung.
Ich möchte nur halt diese nervigen Exceptions nit nur bekommen, sondern auch, dass die Komponente weiß, dass sie nit mehr verbunden ist! Mit einer anfrage, ob das Inet noch an ist, ist ja nicht geholfen. Es geht lediglich um die Verbindung zum POP3 Server, ob die noch besteht oder ob diese Unterbrochen wurde! Wenn der POP3-Server die Verbindung beendet oder das ganze z.B. durch eine unterbrochene Internetverbindung unterbrochen wird bekommt die Komponenten das nie mit und selbst, wenn ich dann die Exception bekommen habe dass die Verbindung unterbrochen wurde, dann glaubt die Komponenten noch immer, dass sie verbunden wäre! :-/


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