現在、次の方法でテキストを受信しています。
boost::asio::streambuf buffer;
std::string text;
while(true) {
try
{
boost::asio::read_until(*m_pSocket, buffer, "END");
text = boost::asio::buffer_cast<const char*>(buffer.data());
buffer.consume(text.size());
boost::asio::write(*m_pSocket, boost::asio::buffer(text, text.size()));
std::cout << text<< std::endl;
}
catch (std::exception& e)
{
std::cerr << "Exception: " << e.what() << "\n";
break;
}
}
シーケンス「END」が受信されたときに、受信したテキストをクライアントにエコーするだけです。私の質問:
そのstreambufを文字列に変換してから、そこからテキスト記号を消費するのは非常に効率が悪いようです。受信したデータを適切に、きれいに、効率的に処理するにはどうすればよいでしょうか?