[Gambas-user] Strings and Network input ...
nando
nando_f at ...951...
Wed May 9 17:54:19 CEST 2007
I experienced a similar problem where I expected it to read up to a delimiter,
but it turns out that LINE INPUT could read up to the end of the complete buffer
because the whole line wasn't received yet, so it was a partial read...sometimes
requiring two or even three reads. The data sent through the socket from another
machine may take quite some time, so multiple read attempts will be required.
I used _read for the socket and I appended what was received to a global receive
string. Then I can find the delimiter at anytime independent of the read process.
I added a 'time-out' timer to expect a delimiter within a certain period of
time..so then the whole thing won't get hung-up because the imap server is too
slow or went off-line(etc). This gives a huge amount of control.
---------- Original Message -----------
From: Gareth Bult <gareth at ...1689...>
To: Gambas User Mailing List <gambas-user at lists.sourceforge.net>
Sent: Wed, 9 May 2007 14:22:55 +0100 (BST)
Subject: [Gambas-user] Strings and Network input ...
> Hi,
>
> I'm currently developing an IMAP4 client component and I seem to have run into a
> problem.
>
> I'm using _Read on a Socket object when data comes in, then I'm doing;
>
> $socket.EndOfLine = "\r\n"
> LINE INPUT #$socket,buffer
> Process(buffer)
>
> Now I understand this to mean that Process() will only get called with
> "complete" lines.
> i.e. lines that were terminated by a CRLF.
>
> If I issue a SEARCH command against my IMAP server, I get a variable length
> string, and for a large folder I'm expecting a string of length 41140 to come
> through. However (!) Process is being called TWICE, the first time with a string
> of length 41116 and the second of 24.
>
> So it "looks like" LINE INPUT is running out of buffer space and silently
> splitting the string in two ... (????)
>
> I'd rather not have to code CRLF detection for READ .. is this a bug, something
> fixable, or am I missing something ?
>
> tia
> Gareth.
>
> --
> Gareth Bult, Encryptec Limited
> Tel: 0845 25 77033, FWD: 753977, Mob: 07891 389657
> Email: gareth at ...1689...
>
> Statements made are at all times subject to Encryptec's Terms and Conditions of
> Business, which are available upon request.
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
------- End of Original Message -------
More information about the User
mailing list