问题标签 [boost-asio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
12733 浏览

c++ - 异步 Mysql 连接器

是否存在可在 C 或 C++ 应用程序中使用的 Mysql 异步连接器?我正在寻找可以插入用Boost.Asio编写的反应器模式的东西。

[编辑:] 在线程中运行同步连接器不是一种选择。

0 投票
3 回答
622 浏览

language-agnostic - 收听多播对我有什么伤害?

我收到了来自交易所的恢复提要,用于恢复其主要提要中丢失的数据。

交易所强烈建议仅在需要数据时收听恢复提要,并在我恢复所需数据后离开多播。

我的问题是,如果我使用的是 asio,并且在不需要时不从 NIC 读取,有什么害处?这些消息有序列号,所以我不会意外处理卡上“留下”的旧消息。

这真的会损害我的应用程序吗?

0 投票
2 回答
596 浏览

c++ - 如果多个不同的接受套接字使用相同的 OpenSSL 上下文,会不会有问题?

如果几个不同的接受套接字使用相同的 OpenSSL 上下文是否可以?

特别是我使用相同的 boost::asio::ssl::context 和 2 个不同的监听套接字。

0 投票
1 回答
586 浏览

c++ - 奇怪的调用堆栈,会不会是asio使用openssl的问题?

我有这个奇怪的调用堆栈,我很难理解为什么。

在我看来,asio 调用 open ssl 的 read 然后得到一个负返回值 (-37) 。

Asio 似乎随后尝试在 memcpy 函数中使用它。

导致此调用堆栈的函数被使用了数百次而没有此错误。

它很少发生,大约每周一次。

请注意,请求标头的大小始终为 3 个字节。

任何人都可以阐明可能的原因吗?

注意:我使用的是 boost asio 1.36

这是由于巨大的“计数”而在 memcpy 中发生的崩溃调用堆栈崩溃:

0 投票
4 回答
2300 浏览

c++ - 奇怪的程序挂起,debug中这是什么意思?

奇怪的程序挂起,debug中这是什么意思?

附加windbg后,我发现以下内容:

调用堆栈:

0 投票
9 回答
59875 浏览

c++ - Boost:asio 的最佳文档?

boost 网站上提供的文档是……有限的。

从我所阅读的内容来看,普遍的共识是很难在 boost::asio 库上找到好的文档。

真的是这样吗?如果是这样,为什么?

笔记:

  • 我已经找到了(非 boost)Asio 网站- 文档看起来与 boost 网站上的相同。
  • 我知道 Boost::asio 是新的!我正在寻找解决方案而不是借口。

编辑:

  • Boost:asio (Christopher Kohlhoff) 的作者提出了将网络库添加到 TR2 标准库的建议。虽然它不是 boost:asio 的文档,但它确实将其用作 TR2 提案的基础。由于作者在此文档中投入了更多精力,因此我发现它有些帮助,如果不是作为参考,那么至少可以作为概述。
0 投票
9 回答
54104 浏览

c++ - 如何在 boost asio 中设置阻塞套接字的超时时间?

有没有办法取消挂起的操作(不断开连接)或为 boost 库函数设置超时?

即我想在 boost asio 中设置阻塞套接字的超时时间?

socket.read_some(boost::asio::buffer(pData, maxSize), error_);

示例:我想从套接字读取一些内容,但是如果 10 秒过去了,我想抛出一个错误。

0 投票
3 回答
10701 浏览

c++ - 你可以在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?

你可以在 boost asio 中设置 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项吗?

如果有怎么办?

注意我知道你可以使用计时器,但我特别想知道这些套接字选项。

0 投票
1 回答
320 浏览

c++ - 是否有一种“好”的方法来处理来自多个来源的重新组装多播?

我目前正在修改我们现有的专有套接字包装器代码以使用 boost asio,以便它可以为我们完成一些繁重的工作。也许我们现有代码中最复杂的部分是多播处理代码。该代码允许我们的中间层服务器(在一个系统中可以有多个)向客户端发送多播,客户端使用这些向系统用户提供更新。

代码复杂且容易出错的原因是它使用许多原始缓冲区来根据多播流的来源重新组装多播流。似乎即使使用 Boost.Asio 我也将不得不处理同样的问题,所以在我陷入困境之前,我认为值得问问其他人是如何处理这种情况的。

这似乎是一个非常常见的用例。没有我现在拥有的那种代码,有什么东西可以帮助我完成这项工作吗?或者是否有一个既定的 C++ 模板(Boost 或其他)可以做这种工作?

显然,我可以让事情变得更轻松,并使用 STL 容器来缓冲数据包而不是原始数组,但是这段代码需要非常高性能。在大型安装中,有大量的数据包飞来飞去,它需要尽可能接近实时地响应。

提前感谢您对此事的任何想法。

杰米

0 投票
3 回答
1440 浏览

c++ - 如何检测 Asio 库的死锁?

我对 boost::asio 库没什么问题。我的应用程序异步接收和处理数据,它创建线程并在每个线程上运行 io_service.run()。

一次又一次,我的应用程序从某个主管应用程序接收消息(通过 Windows 消息传递系统),该应用程序检查我的程序是否处于活动状态。如果我的应用程序没有回复,它将重新启动。这里棘手的部分是检查线程是否正在运行并且没有死锁。我可以像这样将处理程序发布到 io_service:

但这种方法只影响一个线程。如何检查所有线程是否正在运行并且没有死锁?