问题标签 [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 投票
1 回答
826 浏览

c++ - Boost:我们如何为 TCP 服务器指定“任何端口”?

  1. 如何在 Boost 中为基于 TCP 的服务器指定“选择任何可用端口”?
  2. 接受连接后如何检索端口?

更新:“可用端口”是指:操作系统可以选择任何可用端口,即我不想指定端口。

0 投票
6 回答
10393 浏览

c++ - 在 Boost.Asio 中获取 HTML 内容的简单界面

有很多示例如何向服务器发出 HTTP 请求并通过 boost.asio 库获得回复。但是,我找不到简单接口的好例子,我想知道是否需要自己实现它。

例如,如果我需要获取http://www.foo.bar/path/to/default.html的内容,有没有办法在不验证 URL、发出 HTTP 请求和解析服务器答案的情况下获取内容?

基本上,我正在寻找这样的东西:

有几件事我想避免使用 boost.asio。

  • 避免解析和验证 URL。
  • 手动创建 HTTP 请求。
  • 从 HTML 页面内容中删除 HTTP 响应。
0 投票
2 回答
6280 浏览

boost - Boost::asio async_wait 处理程序签名

我正在浏览 boost::asio 示例。我正在查看 示例 4

令人困惑的是,这个例子中的 WaitHandler 有签名

无效打印(本)

但是 async_wait 调用需要一个处理程序,其

处理程序的函数签名必须是:

void handler( const boost::system::error_code& error // 操作结果。);

资料来源:Boost 文档

既然参数类型是函数签名的一部分,为什么在上面的例子中,async_wait 接受一个参数不是 boost::system::error_code 类型的处理程序?

谢谢。

0 投票
3 回答
13479 浏览

performance - 有没有人做过 boost::asio 的性能分析?

我需要类似套接字的本地 IPC。我在 Windows 上使用了命名管道和重叠 IO,我想重写应用程序以 boost::ASIO 以便它也可以使用 UNIX 域套接字。

我最近查看了 libevent 库的部分内容,我知道它在 1.4 版本中仅支持用于 windows 的 socket() 和 select()。由于重叠 IO 非常有效,因此将其排除在外显然是一个不可接受的特性,该特性在版本 2(处于 alpha 版本)中得到了解决。次优实现的另一个示例是使用红黑树与优先队列来处理超时逻辑,该逻辑在沿线某处被解决。

有没有人对 boost 与 libevent/libev 的性能特征有任何意见。它在某些平台上是否有任何明显的不受欢迎的特征?我对这个问题的目标是,除非我绝对必须,否则我不想对 ASIO 库进行深挖。我想知道 boost::asio 是否以最优化的方式使用最优化的操作系统原语。

0 投票
1 回答
831 浏览

c++ - Boost.Asio 是否可以使用单独的线程进行读写?

根据 Boost文档,调用多个线程io_service::run()会设置一个线程池,IO 服务可以使用这些线程池来执行异步任务。它明确指出所有加入池的线程都被认为是等效的。

这是否意味着不可能有一个单独的线程用于从套接字读取和单独的线程用于写入?如果可能的话,我将如何实现这一点?

0 投票
1 回答
741 浏览

c++ - boost.asio tcp sockets,异步操作会被排序吗?

如果我一个接一个地调用 boost::asio::async_write/async_read,数据会被排序吗?或者在我再次调用写/读之前我需要等待回调吗?

提前致谢!

0 投票
5 回答
3692 浏览

c++ - 中断 boost::asio 同步读取?

我正在使用 asio 同步套接字从后台线程通过 TCP 读取数据。这被封装在“服务器”类中。

但是,我希望线程在调用此类的析构函数时退出。问题是对任何读取函数的调用都会阻塞,因此线程不能轻易终止。在 Win32 中,有一个 API:WaitForMultipleObjects它可以做我想要的。

我如何通过 boost 达到类似的效果?

0 投票
2 回答
2704 浏览

c++ - boost::asio 多线程问题

我有一个服务器,boost::asio我希望使用它来制作多线程。

服务器可以分为几个“区域”,套接字从连接区域开始,然后一旦连接到客户端,就被移动到身份验证区域(即登录或注册),然后在服务器的各个其他部分之间移动,具体取决于关于客户在做什么。

我并不是特别想为所有套接字只使用一个线程池io_service,因为需要大量的锁,尤其是在与公共资源有大量交互的区域。但是,相反,我想为每个服务器组件(比如身份验证)提供自己的线程。

但是我不确定如何做到这一点。我考虑过为每个组件提供自己的 io_service 的想法,因此它可以使用它想要的任何线程,但是套接字区域绑定到 io_service,我不确定如何将客户端套接字从一个组件移动到另一个组件。

0 投票
4 回答
13381 浏览

boost-asio - 提升 Asio 和 Web 套接字?

有谁知道使用 Boost asio实现Web Sockets API 的任何尝试?

0 投票
3 回答
21238 浏览

c++ - 如何将 boost::asio::streambuf 转换为 std::string?

我想将 boost::asio::streambuf 转换为 std::string。
我如何轻松做到这一点?