如何让 boost::asio::async_read 在到达终止字符时返回
我正在使用 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();
}
}
现在我正在从其他一些类调用 readMessage()
。每当达到 BUFFER_SIZE
时,就会调用 handleRead
并附加内容。
现在的问题是,BUFFER_SIZE 为 50,整个消息大小为 75,handleRead 仅被调用一次,并且缓冲区等待为handleRead 填充 第二次被调用。 有没有办法设置 EOM 字符或字符串,以便 asio 在到达时返回。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到答案 async_read_until
Found the answer async_read_until