|
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