vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Winsock POP3-Protokoll "Hänger" 
Autor: DustyD.
Datum: 27.10.23 15:55

EDIT: Hoppla, falsches Forum... hab's nach "Einsteiger" verschoben:

https://www.vbarchiv.net/forum/id2_i143961t143961_winsock-pop3-protokoll-haenger.html

Beitrag wurde zuletzt am 27.10.23 um 16:00:00 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: ModeratorMartoeng (Moderator)
Datum: 27.10.23 17:27

Lang lang ist es her...

So etwas ähnliches hatte ich auch mal.
Hast Du die LocalPort-Eigenschaft gesetzt? Wenn ja, nimm das mal raus (also auf 0).


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: DustyD.
Datum: 27.10.23 21:03

Hallo Martoeng,

danke für die schnelle Antwort. Ich hab's grad mal mit und ohne winsock1.localport = 0 probiert, hat aber leider nichts am Ergebnis geändert.

Auf der Suche nach einer Lösung bin ich auch auf diesen Beitrag gestoßen:

https://www.vbarchiv.net/api/details.php?id=closesocket

Allerdings müsste ich dann viel "Handarbeit" machen, die mir Winsock ansonsten abnimmt, oder?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: ModeratorMartoeng (Moderator)
Datum: 30.10.23 14:25

Naja, die Winsock-API wird ja durch das Winsock-Control gekapselt.
Meist ist es etwas "blödes" was dann zu so etwas führt. Die Methoden des Controls sind ja asynchron. Oft gibt es da Probleme, dass bspw Daten mittels SendData gesendet werden, aber direkt darauf ein Close aufgerufen wird, was dazu führt, dass die Daten nie gesendet werden.

Ohne Code kann man da nicht helfen.
Empfehlenswert ist es auch einen Netzwerk-Überwacher lokal laufen zu haben, der einem dann zeigt, in welchem Status eine Verbindung ist und welche Daten gesendet oder empfangen wurden.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: DustyD.
Datum: 30.10.23 17:35

Ich bin noch am Testen, habe aber den blöden Verdacht, dass es an dem QUIT liegt, das ich an den Server sende: Ich habe die einzelnen Funktionen meines Moduls nun auf 2 Winsockets verteilt, einen benutze ich für das Löschen der Mails, darüber sende ich nur die DELE- und den QUIT-Befehl, über den anderen mache ich den Rest (STAT, LIST, RETR). Diesen anderen kann ich so oft öffnen und schließen, wie ich mag, funktioniert problemlos. Ich habe so ein wenig den Verdacht, dass Winsock es nicht mag, wenn die Verbindung von der Gegenstelle getrennt wird, aber das muss ich wie gesagt noch testen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: DustyD.
Datum: 30.10.23 19:55

Nope, daran liegt es leider auch nicht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: DustyD.
Datum: 30.10.23 20:08

Problem mit der Übertragung schließe ich eigentlich aus. Ich setze im SendComplete-Event ein Flag und frage im DataArrival-Event die Meldungen des Servers ab. Die gebe ich dann mit debug.print aus - sieht alles exakt so aus, wie wenn ich es per Telnet "von Hand" mache. Außerdem funktioniert es beim 1. Aufruf ja problemlos. Erst wenn ich den Socket mit winsock2.close schließe und mich neu verbinden möchte, bleibt der Winsock.state auf "6" und eine neue Verbindung kann nicht etabliert werden - bis ich das Programm einmal schließe und neu öffne (sowohl in der IDE als auch im Kompilat).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: sv00010
Datum: 21.11.23 08:04

Wurde das Handle der Verbindung auch wirklich richtig geschlossen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Winsock POP3-Protokoll "Hänger" 
Autor: DustyD.
Datum: 21.11.23 10:12

Nachdem der Server seinerseits die Verbindung nach dem "QUIT"-Befehl schließt, steht der Winsock.State auf 8 (Remote hat Verbindung getrennt). Dann habe ich die Verbindung mit Winsock.close geschlossen, danach ist der State 0 (Verbindung geschlossen). Bei einem erneuten Aufbau der Verbindung blieb der State bei 6 (Verbindung wird aufgebaut) "hängen", es kam keine erneute Verbindung (State 7) zustande - egal, wie lange ich gewartet habe. Habe ich das Programm geschlossen (egal ob kompiliert oder aus IDE heraus) und neu geöffnet, konnte ich wieder exakt 1x Mails löschen, bevor das oben geschilderte Verhalten erneut auftrat.

Die Meldungen des Servers habe ich mir im Direktfenster ausgeben lassen, da kam alles exakt so an, wie ich es auch "von Hand" mit Telnet getestet hatte.

So, und das Ganze schreibe ich in der Vergangenheitsform, weil es "plötzlich" funktioniert. Ich habe ein wenig den Mailserver im Verdacht, denn wenn ich zu oft in zu kurzer Zeit Verbindungsversuche mache, blockiert der Server offenbar auch für mehrere Minuten den Zugriff (habe ich jetzt nicht mit unterschiedlichen öffentlichen IPs getestet). Dann kann ich auch nicht mit einem Mailclient auf das Postfach zugreifen, bis es dann irgendwann wieder geht. Allerdings habe ich in der Zwischenzeit auch noch den Code weiter geändert und optimiert, sodass ich die genaue Ursache leider nicht mehr nachvollziehen kann. Was ich nach wie vor nicht verstehe ist, warum es nach dem Neustart des Programms direkt wieder funktionierte, war mir dann aber irgendwann auch egal, weil "never change a working system".
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel