4
现在我通过以下方式接收文本:使用boost asio接收文本的最有效方法?
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”当我刚收到的回波文本到客户端。我的问题:
在我看来非常inefficent到流缓冲转换为字符串,然后消耗从它的文字标志。以良好,干净和高效的方式处理收到的数据的正确方式是什么?
如果你需要的是发送'streambuf',您可以直接做到这一点,没有用'string'。 – 2013-02-14 15:15:23
不是。在目前的情况下,这已经足够了,但是我的应用程序在以后会变得更复杂 – Anonymous 2013-02-14 15:24:03
'buffer_cast''会返回'const char *'。从这一点你可以用这个常量缓冲区来做任何你想要的。 –
2013-02-14 15:29:31