如何在到达终止字符时获取boost :: asio :: async_read

Man*_*noj 0 c++ boost tcp boost-asio

我正在使用boost asio库来读取tcp套接字中的内容.我的代码看起来像这样

std::string completeBuffer="";
std::string TcpConnection::readMessage()
{
    LOG4CPLUS_DEBUG(logger, "Start Listener for Reading Message from Connection");
    boost::system::error_code error;
    boost::asio::async_read(socket, boost::asio::buffer(buffer),
        boost::bind(&TcpConnection::handleRead, this, buffer, boost::asio::placeholders::error));
    return buffer.data();
}

void TcpConnection::handleRead(boost::array<char, TcpConnection::BUFFER_SIZE> buf, const boost::system::error_code& error)
{
    if(!error)
    {
       LOG4CPLUS_INFO(logger, "READ Message " << buf.data());
       completeBuffer.append(buf.data());
       buf.assign(0);
       readMessage();
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我正在接听其他班级的电话readMessage().每当BUFFER_SIZE到达handleRead被调用的内容并且内容被附加.

现在的问题是说BUFFER_SIZE是50,整个消息大小是75,handleRead只调用一次,缓冲区等待handleRead为第二次调用填充.有没有办法为asio设置EOM字符或字符串,以便在到达时返回.

Man*_*noj 5

找到了答案async_read_until