ich versuche mich gerade an einem POP3-Client. Hierzu verwende ich die
Routinen von Tibor aus dem alten Forum.
http://forums.purebasic.com/german/arch ... php?t=4403
Die Prozeduren, um die es geht, habe ich unten noch mal drangehängt.
Mein spezielles Problem: Ich frage mit GetMail() einen Account mit nur
einer eMail ab. Zwischen While-Wend wird die Variable string$ mit den
Rückgabewerten befüllt. string$ enthält bereits nach ca. 0.5 Sekunden den
gewünschen eMail-Inhalt. Dann allerdings dauert es noch 15 Sekunden(!),
bis die Prozedur zurückkommt. Was geschieht in dieser Zeit? Aus dem
Code werde ich leider nicht ganz schlau.
Oder anders gefragt: Wie kann man den Code abändern, dass er möglichst
schnell abläuft?
Am Timeout zu schrauben sorgt nur übrigens nur dafür, dass ich die eMail
nicht mehr vollständig erhalte...
Code: Alles auswählen
Procedure WaitNetworkClientEvent(ConnectionID,TimeOut)
Repeat
Delay(1)
Event = NetworkClientEvent(ConnectionID)
TimeOut-1
Until Event Or TimeOut <= 0
ProcedureReturn Event
EndProcedure
Procedure.s ReceiveNetworkString(ConnectionID)
Repeat
buffer$ = Space(3000)
Ergebnis = ReceiveNetworkData(ConnectionID, @buffer$, 3000)
string$+RTrim(buffer$)
Until Ergebnis < 3000
ProcedureReturn string$
EndProcedure
Procedure.s GetMail(ConnectionID,Index)
SendNetworkString(ConnectionID, "RETR "+Str(Index)+#CRLF$)
While WaitNetworkClientEvent(ConnectionID,1000) = 2
string$ + ReceiveNetworkString(ConnectionID)
Wend
If Left(string$,3) = "+OK"
ProcedureReturn string$
EndIf
EndProcedure