Async_read_until限制读取的字节大小(Boost::asio)
Async_read_until limit size of bytes read (Boost::asio)
我想知道如何限制用async_red_until读取的字节大小。 从现在开始,我用了一个更愚蠢的角色使用它,但我想改变。 这是我做的:
void Client::doRead()
{
boost::asio::async_read_until(m_socket,
m_buffer,
'n',
boost::bind(&Client::handleRead,
shared_from_this(),
boost::asio::placeholders::error));
}
你可以使用transfer_exactly
(https://www.boost.org/doc/libs/1_68_0/doc/html/boost_asio/reference/transfer_exactly.html(
请注意,不能保证您始终会读取金额,例如,如果发送方提前关闭连接。因此,请检查bytes_transferred
以及error_code
。
在许多情况下,您可以简单地使用async_read
,并使用固定缓冲区:
std::vector<char> m_buffer;
// ...
m_buffer.resize(24); // receive no more than 24 characters
boost::asio::async_read(m_socket,
boost::asio::buffer(m_buffer),
boost::bind(&Client::handleRead, shared_from_this(),
boost::asio::placeholders::error));
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 执行时使用 boost::asio::d eadline_timer 时出错
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- boost::asio data owning `ConstBufferSequence`
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 如何将boost::asio::d eadline_timer 与Qt一起使用?
- 将更高的优先级设置为 boost::asio 线程处理进程
- Async_read_until限制读取的字节大小(Boost::asio)
- 程序崩溃使用boost::asio
- boost::asio 无法捕获 SIGINT
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- 如何在 boost::asio 中将打包的结构作为消息传递?(无序列化)
- 如何使用C++和Boost Asio从HTTP发布请求中获取键值
- std::boost::asio::p ost / dispatch 使用哪个io_context?