boost-asio相关内容
boost::asio::io_context::run()在没有挂起的工作时返回。我希望避免此行为,以便run()确实无限期地等待新工作,并有可能从另一个线程停止它。 我想这可以通过在io_context中启动一个无限长的计时器,并在我们希望run()返回时调用该计时器来实现。 这是正确的方法吗?有干净的方法吗? 推荐答案 可以使用executor_work_guard。
..
我有一个通过RS-232接口控制的硬件设备(它是一个超声波脉冲接收器)。我需要编写一个程序来将命令从我的计算机发送到设备。然而,不同寻常的是,该设备没有串口(DB-9 COM端口),而是有RJ45插座(以太网插座)。该设备附带一个适配器,用于将设备上的以太网端口连接到用于与计算机通信的串行电缆。 遗憾的是,我的计算机没有串口,只有以太网端口。如果可能的话,我想取消适配器,用以太网线将我的计算机直
..
我修改了http_sync示例以通过代理连接,我使用Wireshark进行了测试,问题是在我发送http连接请求后,代理返回代码200 OK,而我的程序无法读取它,它在等待http::Read大约1分钟后就断开了与服务器的连接。 我试着绕过这一点,只是没有读取响应,但当我尝试进行SSL握手时,我得到了一个错误:未知协议(就Wireshark显示的情况而言,我的SSL握手会发送客户端问候,然后我会收
..
我正在使用Boost::ASIO来处理我的程序和远程服务器之间的网络通信。要与服务器建立连接,我执行以下操作序列: namespace ba = boost::asio; boost::shared_ptr ssl_ctx; boost::shared_ptr ios; // initialized bo
..
我正在尝试侵入一个现有的应用程序,一个socks4客户端。该程序使用异步Boost::ASIO。 到目前为止,我需要先与socks4服务器协商: boost::asio::ip::tcp::endpoint socks_proxy{boost::asio::ip::make_address("127.0.0.1"),1080}; if( socks_proxy.prot
..
我正在尝试让Boost ASIO库发送POST,但变量从未到达服务器。我知道服务器工作正常(使用cURL进行了测试) 此代码不起作用(变量msg未发送到服务器),但当我使用cURL时它确实起作用 tcp::resolver resolver(io_service); tcp::resolver::query query("localhost", "3000"); // "http")
..
自Boost的最新版本以来,ASIO推出了新的执行器,并提供了asio::strand。因此,现在完全可以使用asio::strand而不是io_context::strand。但它们不能互换使用。 谁能解释一下和举例的用法有什么区别吗? 他们的优势/不方便? 推荐答案 io_context:
..
因此,我正在尝试修改第三方(Libtorrent)以仅接受TLS 1.2协议。 SSL上下文设置的一部分: boost::shared_ptr ctx = boost::make_shared(boost::ref(m_ses.get_io_service()), context::tlsv12) ctx->set_options(context:
..
asio::thread_pool和asio::io_context谁的run()函数是从多个线程调用的,有什么区别?我可以将调用io_context::run()的线程的boost::thread_group替换为asio::thread_pool吗?或者我需要一个io_context? 更新 当我使用asio::thread_pool时,我是否仍然需要io_context来使用套接
..
我有一个使用Boost::ASIO进行异步输入/输出的单线程Linux应用程序。现在,我需要扩展此应用程序以读取/sys/class/gpio/gpioXX/value上的GPIO输入。 在边沿触发的GPIO输入上使用Boost::ASIO::POSIX::STREAM_DESCRIPTOR可以做到这一点吗? 我配置的GPIO输入如下: echo XX >/sys/class/g
..
我正在使用带有C++的Boost ASIO库。我发现io_service和io_context有相似之处。例如,两者都有方法运行和其他。谁能详细介绍一下这两个类别之间的区别(如用法、概念、结构差异等) 推荐答案 您应该使用io_context,它取代了io_service。 根据Boost问题#110: io_service已弃用。是的,您应该使用io_context。请注
..
正在尝试学习ASIO,我正在按照网站上的示例操作。 为什么需要io_service,它的具体用途是什么?为什么我在执行异步操作时需要将它发送到几乎所有其他函数,为什么它不能在第一个“绑定”之后“创建”自己。 推荐答案 ASIO的io_service是操作异步函数的促进器。一旦异步操作准备好,它就会使用io_service的一个运行线程来回调您。如果不存在这样的线程,它会使用自己的
..
我希望在我的项目中使用boost.asio头文件,但当我包含它的.hpp文件时,我在编译时收到以下输出错误: 我需要为CROW发送我的Web请求的bost.asio。 /home/john/Downloads/clion-1.2.4/bin/cmake/bin/cmake--构建/home/john/.CLion12/system/cmake/generated/a3f08900/a3
..
上下文 我使用Boost Coroutine、Boost ASIO和Boost Beast构建了一个Web服务器。 有一个用于阅读的协奏表和一个用于写作的协奏表。 有一个Message_to_Send队列,消息被推送到该队列中发送给用户。 编写协程检查Message_to_Send队列中是否有内容并将其发送。 发送写入后,协程挂起自身100毫秒,然后再次检查要写入的内容。 问题 写入协程
..
我对GraphQL服务器进行了大约30,000个查询;因为我有一个高延迟连接,所以我使用线程并行地执行许多查询。目前,每个查询都会建立一个新的连接;我希望重用这些连接,这应该会减少整个下载所需的时间。以下是我的代码: #include #include #include #incl
..
作为一个土生土长的法语人和一名Boost::ASIO用户,我已经将‘strand’这个词添加到我的词汇表中(在法语中是‘toron’),这里是一个由三条绳组成的绳子的图像,每一条绳由多条绳组成: 但我不明白克里斯托弗·科尔霍夫用的比喻,你懂吗? 推荐答案 链是逻辑顺序路径。 即使许多路径交织在一起,这些路径也是连续的、不间断的,并且在逻辑上是不同的。 这就是这个比喻的
..
我正在从本例中学习Boost.Beast&;Boost.Asiolibs/beast/example/http/server/async-ssl/http_server_async_ssl.cpp - 1.77.0。 据我所知,发生在I/O对象上的所有I/O操作都发生在该对象的I/O执行上下文中。异步操作将与I/O上下文的run位于同一线程中,因为它们都由I/O上下文的run(间接)调用。
..
我正在使用独立的ASIO和C++11创建C++服务器应用程序,但收到错误,这就是我寻求帮助的原因。 错误 在类worker_thread中,在调用shared_from_this()期间引发bad_weak_ptr异常,导致程序崩溃。 布局 类connection_manager在std::vector容器中创建并存储std::shared_ptr
..
ASIO v1.11。文档称basic_stream_socket::get_io_service()成员函数已弃用,必须使用get_executor()。但后者返回executor而不是io_service。 如何获取套接字用来构造另一个对象的io_service对象的引用? 推荐答案 可以使用get_executor().context(): socket newSoc
..
我看到Protobuf有一个名为“bytes”的类型,它可以存储任意数量的字节,相当于“C++字符串”。我不喜欢使用“bytes”的原因是它希望输入为C++字符串,即Boost IP需要转换为字符串。现在我的关注点在于:我想执行序列化,并通过TCP套接字发送编码后的协议缓冲区消息。我希望确保编码邮件大小尽可能小。 我目前使用的是以下.proto文件: syntax = "proto2"
..