Designing network protocols
From HashVB
<@QueenDee> ok, so you can NOT rely on the data being recieved in the same chunks as they are snt
<@QueenDee> they will be in the same order, yes, but be broken into chunks as the server, and any devices along the route see
fit
< lsdigital> well kinda
<@QueenDee> So, you need to receive ALL data into one buffer
< lsdigital> yeh
< lsdigital> like
<@QueenDee> there is no kinda about it
<@QueenDee> thats how it is
< lsdigital> i hwell
< lsdigital> there is only one server
< lsdigital> but ya
< lsdigital> all of it comes at once
< lsdigital> and
< lsdigital> vb isnt parsing it all
< lsdigital> ill get like
< lsdigital> the first 5 lines
<@QueenDee> shut up and listen
<@QueenDee> that is EXACTLY what I have just explianed
< lsdigital> k
< Deathmaster> LOL dee is already nervous ;))
<@QueenDee> the chunks the server sends will NOT be the chunks you receive
< logicerror> lol
<@QueenDee> there needs to be some delimiter character (new line normally) to say process this
<@QueenDee> so...
<@QueenDee> you read all your data into a single buffer, then parse that
<@QueenDee> read data in and append to buffer
<@QueenDee> check for crlf
<@QueenDee> if crlf exists, read up to it, and remove form buffer
<@QueenDee> repeat check for crlf
<@QueenDee> each time you get "new data" you recieve it ALL into a string < Chris_Tucker> yes <@QueenDee> append it to a buffer which contains any pending data so far (set later on) <@QueenDee> THEN <@QueenDee> you look for a vbcrlf in that buffer < Chris_Tucker> ok <@QueenDee> if there is one, read up to it, process it and remove it form the buffer <@QueenDee> look for the crlf again <@QueenDee> if there is one, read up to it, process it and remove it form the buffer <@QueenDee> reapeta those steps UNTIL there is no more crlf < Chris_Tucker> i understand that, but i have never worked with buffers before, is it just a string? <@QueenDee> if you are lucky, you will have nothign left in teh buffer <@QueenDee> but it is possible you will have a few stray bytes left <@QueenDee> so you leave them for next time -!- Arhangel [~ed@netrun-56-17.cytanet.com.cy] has joined #vb <@QueenDee> yes. < Chris_Tucker> well, problem < Arhangel> has anyone had experience with RDL? < Chris_Tucker> i can see that if stuff piles up, it could end up in a VERY dangerous situation <@QueenDee> it wont pile up < Hypnotron> Chris_Tucker: you read in all data immediately in a loop and process it. nothings gonna pile up <@QueenDee> because you read EVERYTHING that is in teh buffer that is "complete" <@QueenDee> the only thing potentiall left over is half a command <@QueenDee> which will be completed when the next lot of data is received