boost::asio read_until problem
-
Mein server sendet einen Text:
string msg = "text1"; boost::asio::write(client, boost::asio::buffer(msg, msg.length()));Der client liest ihn dann:
boost::asio::streambuf readBuffer; boost::asio::read_until(client, readBuffer, '1');Nun soll der client 2 texte erhalten.
server:
string msg = "text1"; boost::asio::write(client, boost::asio::buffer(msg, msg.length())); msg = "text2"; boost::asio::write(client, boost::asio::buffer(msg, msg.length()));client:
boost::asio::streambuf readBuffer; boost::asio::read_until(client, readBuffer, '1'); boost::asio::read_until(client, readBuffer, '2');Aber am ende enthält readBuffer nicht "text2" sondern "text1text2".
Wieso und wie kann ich das ändern?
-
'1' != "1"
-
weiß ich...
-
Was erwartest Du?
Du hast EIN readBuffer und rufst danach einfach zweimal read_until(..) auf - logisch landet das in demselben Buffer hintereinander. Nimm entweder zwei Buffer oder entferne das gelesene nach dem ersten read_until(..) aus dem Buffer.
-
Schau' dir mal die consume-Methode des streambuf an: http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/reference/basic_streambuf/consume.html