Registriert seit: 1. Feb 2003
1.340 Beiträge
FreePascal / Lazarus
|
Re: IdTCPClient.ReadBuffer
16. Dez 2004, 05:46
das problem liegt wohl woanderst.
es ist richtig, das der client solange wartet, bis er alles gelesen hat ( länge der zu lesenden bytes )
er wird solange blockierend darauf warten bis das letzte byte angekommen ist
ergo: du musst auch soviel senden !
ergo: dein record muss haargenau vom selben typ sein wie der auf dem server
du musst dir also mit readln oder readinteger irgend ein protocol erfinden, mit dem du alles drumherum handelst ("jetzt kommt der und der stream mit dem format") und dann mit readbuffer eine definierte länge liest
somit ist es dann egal ob es länger dauert, bis der server seinen buffer übertragen hat, der client wartet einfach solange ( solange man kein timeout z.b. in readln angegeben hat )
wenn du aber einen endlosbuffer hast (stream einer webcam oderso) dann musst du das ding natürlich in einen thread auslagern und in einer endlosschleife solange lesen lassen, bis die connection flöten gegangen ist, oder deine evtl selbstgemachte timeout zuschlägt und den thread terminiert usw
die thread - read methode ist besondert bei chats eingebaut, wo ein thread mit einer endlosschleife dauernd ReadLn macht und damit alles entgegennimmt und verarbeitet, was der server an den client schickt
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
|