Boost.Asio是一个用于网络和低级I / O编程的跨平台C ++库,它使用现代C ++方法为开发人员提供一致的异步模型。
使用 Boost Beast 通过 HTTP 将文件发送到服务器
我正在尝试使用 POST 请求发送一个文件,但每次我得到一个空的正文并且在服务器端绝对没有关于该文件的信息。 beast::http::request 重新...
从 C++17 升级到 C++20,在 Boost 中遇到构建错误,使用 boost::asio::use_future 作为第二个参数时的 async_accept()
操作系统:Ubuntu 22.04 编译器:gcc 11.3 升压版本:1.80 致力于将现有项目从 C++ 标准 C++17 升级到 C++20。一切都在 C++17 中编译,但是当升级到 C++20 时,一个错误...
boost::asio::steady_timer 比预期提前到期
我正在开发一个网络应用程序,如果在延迟时间内没有答案返回,每个请求都必须超时。 为此,我一直在尝试将 boost::asio::steady_timer 与 async_wait 一起使用。
如何为 Boost ASIO TCP 套接字设置 TCP_QUICKACK
我正在尝试为我的 Boost TCP 服务器/客户端应用程序设置 TCP_QUICKACK。我在 Boost asio 中找不到 TCP_QUICKACK。我该如何设置这个选项?
是否可以一个线程启动异步 IO 而另一个线程运行完成处理程序等
我正在探索基于 boost asio 和完成处理程序将多线程 C++ 应用程序转换为异步网络风格的选项。但是有两个症结点: 钙...
我正在实现一个可以使用 tcp 和 unix 套接字的简单服务器后端。 这是侦听器块: 静态 asio::awaitable listener() { const 自动执行器 = co_await asio::
我的程序在尝试使用 boost asio 通道将数据从生产者发送到消费者时阻塞。 async_send 方法不是异步的。文档说:此方法异步发送...
如何让boost::asio::acceptor在关闭后再次接受连接?
我的服务器想要限制同时建立的会话(TCP 套接字)的数量。 当最大。达到会话/连接数,然后我就关闭()接受者。 当其他会话...
我有一个线程可以监听套接字,读取传入的数据包,处理它们并将它们发送到另一个套接字。 我想通过为数据包处理添加专用线程来加速此流程...
我的程序在尝试使用 boost asio 通道将数据从生产者发送到消费者时阻塞。 async_send 方法不是异步的。文档说:此方法异步发送...
关于“asio::async_compose”与“asio::async_initiate”的混淆
我正在慢慢理解 asio 做事的方式,因为我迁移遗留回调代码以使用完成令牌。到目前为止,我一直在遵循 callback_wrapper.cpp ex 中描述的模式......
我有响应解析器 boost::beast::http::parser。据我了解, buffer_body 意味着响应主体数据应该存储在用户提供的
使用预协程 asio 接口时,我可以立即分派异步函数并让它在上下文中完成。 asio::dispatch([](){ // 立即执行 asio::steady_timer t(ctx, ...
boost::asio::streambuf读写的正确使用方法
我有特定格式的数据流,我需要在网络中读/写。目前,我在 boost::asio 中使用 boost::asio::streambuf 和 async_* 函数。有时,我需要读取所有数据...
Boost.Beast 应用程序无法编译 :( 警告:在 PIE 中创建 DT_TEXTREL
应用程序源代码位于 https://nicer.app/NicerAppWebOS/version%206.0.0%20development/NicerAppWebOS-core-Boost.Beast.cpp 我试着编译它 root@parakeet:/home/reneajmveerman/Documents/
boost asio 频道“没有名为‘receive_cancelled_signature’的类型”
我正在尝试使用 boost 实现线程安全的观察者设计模式,所以我想遍历 boost asio 通道列表? 说我有 结构 A{}; std::列表 我正在尝试使用 boost 实现一个线程安全的观察者设计模式,所以我想遍历一个 boost asio 通道列表? 说我有 struct A{}; std::list<boost::asio::experimental::channel<void(std::error_code, std::shared_ptr<A>>> channels; for (auto it = channels.begin(); it != channels.end(); ++it) {} 使用我得到的代码: error, no type named 'receive_cancelled_signature'. 当我删除 for 循环时,程序编译没有错误 是否可以在 boost asio 中迭代通道? 更简单的复制:Live On Coliru #include <boost/asio/experimental/channel.hpp> #include <boost/asio/system_executor.hpp> using Channel = boost::asio::experimental::channel<void(std::error_code, size_t)>; int main() { Channel c(boost::asio::system_executor{}); } shared_ptr,A,list和循环与它无关。 你的错误是你使用了默认不支持的std::error_code Standalone Asio 确实使用 std::error_code,也许 Boost Asio 可以配置为这样做。 请记住,如今 Boost System 具有更多功能,并且与 std::error_code 具有出色的互操作性。 修复 使用boost::system::error_code: 住在Coliru #include <boost/asio.hpp> #include <boost/asio/experimental/channel.hpp> #include <iostream> #include <list> using Channel = boost::asio::experimental::channel<void(boost::system::error_code, size_t)>; int main() { boost::asio::io_context ctx; std::list<Channel> channels; for (auto n = 5; n--;) channels.emplace_back(ctx); for (Channel& ch : channels) { std::cout << "Ch at address " << &ch << std::endl; } } 打印例如 Ch at address 0x2047d90 Ch at address 0x2048130 Ch at address 0x2048470 Ch at address 0x20487b0 Ch at address 0x2048af0
Boost.Asio - 在调用之前使用 std::move on handler
我对我经常看到的 Boost.Asio 习惯用法感到困惑 - 像这样调用处理程序(函数对象): std::move(处理程序)(param1, param2); 这样写的原因是什么?我的理解...
Asio Boost - win_iocp_io_context::timer_thread_function 在停止上下文和接受器后卡住等待
我有一个基于 boost 站点上的 advanced_server.cpp 示例的 Web 服务器,我试图让它启动,服务一些请求,停止然后重新开始监听不同的套接字,而无需
这个问题会比较抽象,但是 我曾经得到一份大学作业,要使用我最了解的编程语言(不幸的是 C++:...
asio::steady_timer 不适用于完成处理程序“use_awaitable”
如果我在另一个协程中修改计时器,我很困惑带有完成处理程序“use_awaitable”的 asio::timer 协程不起作用。 “离开 foo”从未达到: 恩...