Boost logo

Boost Users :

Subject: Re: [Boost-users] [asio] socket::read_some() splits data into two parts.
From: Andrew Holden (aholden_at_[hidden])
Date: 2011-05-11 09:42:59


On Wednesday, May 11, 2011 8:29 AM, Slav wrote:
>
> Hello.
> I sent 8004 bytes to server through TCP connection and successfully read it like this:
>
>    int readBytes;
>    const int BUFFER_SIZE = 128;
>    char charBuf[BUFFER_SIZE];
>    do
>    {
>        readBytes = socket.read_some(boost::asio::buffer(charBuf, BUFFER_SIZE));
>    }
>    while(readBytes >= BUFFER_SIZE);
>
> But sometimes this code reads just 3752 (precisely) bytes and returns. After
> that it handles another async_read and reads 4525 bytes (which in sum gives
> 8004 bytes).
> Do I use "read_some()" function in the right way?

Try changing the last line to:

while(readBytes != 0);


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net