boost-asio相关内容

当没有更多的工作要做时,防止Boost::ASIO::IO_CONTEXT返回

boost::asio::io_context::run()在没有挂起的工作时返回。我希望避免此行为,以便run()确实无限期地等待新工作,并有可能从另一个线程停止它。 我想这可以通过在io_context中启动一个无限长的计时器,并在我们希望run()返回时调用该计时器来实现。 这是正确的方法吗?有干净的方法吗? 推荐答案 可以使用executor_work_guard。 ..
发布时间:2022-08-11 16:02:48 C/C++开发

通过以太网线(TCP)实现RS-232串行连接

我有一个通过RS-232接口控制的硬件设备(它是一个超声波脉冲接收器)。我需要编写一个程序来将命令从我的计算机发送到设备。然而,不同寻常的是,该设备没有串口(DB-9 COM端口),而是有RJ45插座(以太网插座)。该设备附带一个适配器,用于将设备上的以太网端口连接到用于与计算机通信的串行电缆。 遗憾的是,我的计算机没有串口,只有以太网端口。如果可能的话,我想取消适配器,用以太网线将我的计算机直 ..
发布时间:2022-08-11 15:59:30 C/C++开发

使用Boost Beast通过代理发出同步http请求时出现问题

我修改了http_sync示例以通过代理连接,我使用Wireshark进行了测试,问题是在我发送http连接请求后,代理返回代码200 OK,而我的程序无法读取它,它在等待http::Read大约1分钟后就断开了与服务器的连接。 我试着绕过这一点,只是没有读取响应,但当我尝试进行SSL握手时,我得到了一个错误:未知协议(就Wireshark显示的情况而言,我的SSL握手会发送客户端问候,然后我会收 ..
发布时间:2022-08-11 15:50:06 C/C++开发

增强ASIO HTTP客户端开机自检

我正在尝试让Boost ASIO库发送POST,但变量从未到达服务器。我知道服务器工作正常(使用cURL进行了测试) 此代码不起作用(变量msg未发送到服务器),但当我使用cURL时它确实起作用 tcp::resolver resolver(io_service); tcp::resolver::query query("localhost", "3000"); // "http") ..
发布时间:2022-04-09 15:41:12 C/C++开发

ASIO::IO_CONTEXT和ASIO::THREAD_POOL有什么区别?

asio::thread_pool和asio::io_context谁的run()函数是从多个线程调用的,有什么区别?我可以将调用io_context::run()的线程的boost::thread_group替换为asio::thread_pool吗?或者我需要一个io_context? 更新 当我使用asio::thread_pool时,我是否仍然需要io_context来使用套接 ..
发布时间:2022-04-09 15:36:06 C/C++开发

如何在Linux GPIO中使用Boost::ASIO

我有一个使用Boost::ASIO进行异步输入/输出的单线程Linux应用程序。现在,我需要扩展此应用程序以读取/sys/class/gpio/gpioXX/value上的GPIO输入。 在边沿触发的GPIO输入上使用Boost::ASIO::POSIX::STREAM_DESCRIPTOR可以做到这一点吗? 我配置的GPIO输入如下: echo XX >/sys/class/g ..
发布时间:2022-04-09 15:33:24 C/C++开发

增强ASIO io_服务与io_Context

我正在使用带有C++的Boost ASIO库。我发现io_service和io_context有相似之处。例如,两者都有方法运行和其他。谁能详细介绍一下这两个类别之间的区别(如用法、概念、结构差异等) 推荐答案 您应该使用io_context,它取代了io_service。 根据Boost问题#110: io_service已弃用。是的,您应该使用io_context。请注 ..
发布时间:2022-04-09 15:31:55 C/C++开发

IO_SERVICE,为什么以及如何使用它?

正在尝试学习ASIO,我正在按照网站上的示例操作。 为什么需要io_service,它的具体用途是什么?为什么我在执行异步操作时需要将它发送到几乎所有其他函数,为什么它不能在第一个“绑定”之后“创建”自己。 推荐答案 ASIO的io_service是操作异步函数的促进器。一旦异步操作准备好,它就会使用io_service的一个运行线程来回调您。如果不存在这样的线程,它会使用自己的 ..
发布时间:2022-04-09 15:30:35 C/C++开发

如何使用Boost协程等待变量的更改?

上下文 我使用Boost Coroutine、Boost ASIO和Boost Beast构建了一个Web服务器。 有一个用于阅读的协奏表和一个用于写作的协奏表。 有一个Message_to_Send队列,消息被推送到该队列中发送给用户。 编写协程检查Message_to_Send队列中是否有内容并将其发送。 发送写入后,协程挂起自身100毫秒,然后再次检查要写入的内容。 问题 写入协程 ..
发布时间:2022-04-09 15:25:48 其他开发

如何在Beast中保持此HTTPS连接?

我对GraphQL服务器进行了大约30,000个查询;因为我有一个高延迟连接,所以我使用线程并行地执行许多查询。目前,每个查询都会建立一个新的连接;我希望重用这些连接,这应该会减少整个下载所需的时间。以下是我的代码: #include #include #include #incl ..
发布时间:2022-04-09 15:20:50 C/C++开发

在Boost::ASIO的背景下,这个术语背后的隐喻是什么?

作为一个土生土长的法语人和一名Boost::ASIO用户,我已经将‘strand’这个词添加到我的词汇表中(在法语中是‘toron’),这里是一个由三条绳组成的绳子的图像,每一条绳由多条绳组成: 但我不明白克里斯托弗·科尔霍夫用的比喻,你懂吗? 推荐答案 链是逻辑顺序路径。 即使许多路径交织在一起,这些路径也是连续的、不间断的,并且在逻辑上是不同的。 这就是这个比喻的 ..
发布时间:2022-04-09 15:19:18 其他开发

不推荐使用的get_io_service()的替代方法

ASIO v1.11。文档称basic_stream_socket::get_io_service()成员函数已弃用,必须使用get_executor()。但后者返回executor而不是io_service。 如何获取套接字用来构造另一个对象的io_service对象的引用? 推荐答案 可以使用get_executor().context(): socket newSoc ..
发布时间:2022-04-09 15:14:33 其他开发

存储IPv4或IPv6地址最有效的协议类型(在C++中)是什么?我的地址是Boost::ASIO::IP::Address_v4(或v6)

我看到Protobuf有一个名为“bytes”的类型,它可以存储任意数量的字节,相当于“C++字符串”。我不喜欢使用“bytes”的原因是它希望输入为C++字符串,即Boost IP需要转换为字符串。现在我的关注点在于:我想执行序列化,并通过TCP套接字发送编码后的协议缓冲区消息。我希望确保编码邮件大小尽可能小。 我目前使用的是以下.proto文件: syntax = "proto2" ..
发布时间:2022-03-09 17:07:57 其他开发