Boost ASIO read X bytes synchroniously into a vector
Posted
by xeross
on Stack Overflow
See other posts from Stack Overflow
or by xeross
Published on 2010-04-29T14:23:01Z
Indexed on
2010/04/29
14:27 UTC
Read the original article
Hit count: 168
Hey,
I've been attempting to write a client/server app with boost now, so far it sends and receives but I can't seem to just read X bytes into a vector.
If I use the following code
vector<uint8_t> buf;
for (;;)
{
buf.resize(4);
boost::system::error_code error;
size_t len = socket.read_some(boost::asio::buffer(buf), error);
if (error == boost::asio::error::eof)
break; // Connection closed cleanly by peer.
else if (error)
throw boost::system::system_error(error); // Some other error.
}
And the packet is bigger then 4 bytes then it seems it keeps writing into those 4 bytes until the entire packet has been received, however I want it to fetch 4 bytes, then allow me to parse them, and then get the rest of the packet.
Can anyone provide me with a working example, or at least a pointer on how to make it work properly ?
Regards, Xeross
© Stack Overflow or respective owner