Boost logo

Boost Users :

Subject: [Boost-users] [asio] Problem implementing a line-based protocol
From: Hannes Brandstätter-Müller (boost_at_[hidden])
Date: 2011-01-11 06:45:20


I am trying to write a server and client that use a line-based text protocol
for communication. It works rather well now, but there is some weird
problem:

One of my messages loses the first 4 characters. (reproducible, but I don't
do anything special in that one case, I think)

boost::asio::async_read_until is used to read the line into a
boost::asio::streambuf
the socket is a boost::asio::local::stream_
protocol::socket

std::string msg;
std::istream is(&buffer);
std::getline(is, msg);

I looked at the buffer.size(), the size reported to the handler function and
compared it to the length of the message, which looks consistant, so I don't
assume that the read call read some characters over the \n. (but that would
be the only logical explanation)

* there are no multiple read operations on the socket
* I reuse the same buffer for multiple async_read_until calls

Does anyone have a code snippet that can help me figure out what could be
stuck and lost in the buffer, or where else the problem could be?



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