AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkennen?
Thema durchsuchen
Ansicht
Themen-Optionen

[INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkennen?

Offene Frage von "meolus"
Ein Thema von meolus · begonnen am 28. Aug 2005 · letzter Beitrag vom 28. Aug 2005
Antwort Antwort
Benutzerbild von meolus
meolus

Registriert seit: 28. Aug 2005
Ort: Aachen
20 Beiträge
 
Delphi 2006 Professional
 
#1

[INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkennen?

  Alt 28. Aug 2005, 11:05
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 :-/
Real programmers don't comment their code;
if it was hard to write, it should be hard to read.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne

  Alt 28. Aug 2005, 11:30
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?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von meolus
meolus

Registriert seit: 28. Aug 2005
Ort: Aachen
20 Beiträge
 
Delphi 2006 Professional
 
#3

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne

  Alt 28. Aug 2005, 11:44
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
Real programmers don't comment their code;
if it was hard to write, it should be hard to read.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne

  Alt 28. Aug 2005, 13:35
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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von meolus
meolus

Registriert seit: 28. Aug 2005
Ort: Aachen
20 Beiträge
 
Delphi 2006 Professional
 
#5

Re: [INDY] TIdPOP3: Wie den Verbindungsstatus sicher erkenne

  Alt 28. Aug 2005, 14:05
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! :-/
Real programmers don't comment their code;
if it was hard to write, it should be hard to read.
  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:21 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