2007/10/30, Francis Cianfrocca <garbagecat10 / gmail.com>:
> On 10/30/07, Frank Preiswerk <frank.preiswerk / stud.unibas.ch> wrote:
> >
> > Yes, I understand that socket.recv() reads UP TO size bytes, but doesn't
> > necessarily wait.
> > How would you buffer the data?
> >
> > Maybe my server indeed sends some data when I think it doesn't, so my
> > client
> > receives a bit of data and thinks that's it. Buffering should do the trick
> > here. But how?
>
> If the server closes the connection after sending the data, you can simply
> use socket#read. If you need to wait for the data and then process them as
> they comes in, use #select in a loop until all the data have been received.

There is another option - even if the server does not close after
sending: use #read with a given size limit. #read will block and
return as soon data is available.  Using #read without limit is a bad
idea on a socket anyway because it has to read until EOS, as you
indicated.

DRb would be another option if both sides are written in Ruby.

Kind regards

robert