[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