
Hello, I have encountered a problem with some code that I cannot get my head around, I have spent quite a while looking for solutions but nothing has come up. When the client sends the first packet it is read fine but the header(first 8 bytes) for the second packet ALWAYS goes wrong, the first byte in the buffer is always null and the rest of the packet is pushed down the char array, e.g. I have done plenty of checks on the data the client sends: Client sends 00080002 Header reads _0008000 Client sends 0008TEST Header reads _0008TES (with _ as null) CODE: This is the first call to async_read, called when the client has connected ----------------- void CClient::start() { Log(MSG_INFO, "[%i] Connected", socket_.native()); boost::asio::async_read(socket_, boost::asio::buffer(packet_.buffer(), CPacket::headerSize), boost::bind(&CClient::recvHeader, shared_from_this(), boost::asio::placeholders::error) ); } The rest of the async_read's are called here ----------------- void CClient::recvMessage(const boost::system::error_code& error) { if (!error && handleMessage()) { packet_.reset(); boost::asio::async_read(socket_, boost::asio::buffer(packet_.buffer(), CPacket::headerSize), boost::bind(&CClient::recvHeader, shared_from_this(), boost::asio::placeholders::error) ); } else { disconnect(); } } Thanks in adavnce, Matty. P.S. I am very inexperienced with boost and not great at C++ so if you see anything I could improve, feedback would be appreciated.