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

c++ - `enable_shared_from_this` 有什么用处?

我在阅读 Boost.Asio 示例时遇到了enable_shared_from_this问题,在阅读了文档后,我仍然不知道应该如何正确使用它。有人可以给我一个例子和解释什么时候使用这个类是有意义的。

0 投票
1 回答
26137 浏览

c++ - io_service,为什么以及如何使用它?

尝试学习 asio,我正在关注网站上的示例。

为什么需要 io_service 以及它究竟做了什么?为什么我需要在执行异步操作时将它发送到几乎所有其他函数,为什么它不能在第一次“绑定”之后“创建”自己。

0 投票
2 回答
764 浏览

multithreading - 何时在 asio 中使用异步操作

我什么时候应该在 boost::asio 中使用异步操作而不是在单独的线程中使用同步操作?

0 投票
4 回答
2605 浏览

c++ - 有没有办法让 Asio 在没有 Boost 的情况下工作?

我知道有一个版本的 ASIO 不包含在 Boost 命名空间中,但即便如此,ASIO 也依赖于 Boost,但我想知道是否有办法让 ASIO 在不依赖 Boost 的情况下工作(因为我不能包含 Boost进入项目,原因太多了)。

0 投票
2 回答
1541 浏览

c++ - 对于 boost-asio 网络编程,处理响应的最佳方法是什么?

我是网络编程的新手,尤其是异步进程。从 boost-lib 开始

我正在实现一个类,以访问 imap 服务器。一般来说,我可以发送和接收命令和响应

响应在类内的出列队列中排队。我将简单的响应行放入队列中,以供进一步处理。

现在处理排队响应的最佳方法是什么?

  1. 一个额外的线程来检查(基于时间)队列,是否有新条目?
  2. 每次将新条目推送到队列时都会进行一些回调?
    如何实现和集成此回调?

也许有人对此有一个简短的例子。

谢谢

0 投票
3 回答
4785 浏览

boost-asio - 谁使用 Boost ASIO?

我想知道Boost ASIO有多受欢迎。它是否被用于任何流行的网络密集型软件?

0 投票
6 回答
19434 浏览

c++ - 如何检查 Boost.Asio 中的套接字是否已关闭?

检查连接的远程端是否关闭了套接字的最简单方法是什么?socket::is_open()即使它在远程端关闭(我正在使用boost::asio::ip::tcp::socket)也返回 true。

我可以尝试从流中读取并查看它是否成功,但我必须更改程序的逻辑以使其以这种方式工作(我不希望在检查时从流中提取数据)。

0 投票
11 回答
52858 浏览

c++ - 将 streambuf 的内容复制到字符串

显然boost::asio::async_read不喜欢字符串,因为唯一的重载boost::asio::buffer允许我创建const_buffers,所以我坚持将所有内容读入 streambuf。
现在我想将 streambuf 的内容复制到一个字符串中,但它显然只支持写入 char* ( sgetn()),使用 streambuf 创建一个 istream 并使用getline().

有没有其他方法可以在不过度复制的情况下创建带有 streambufs 内容的字符串?

0 投票
1 回答
972 浏览

serial-port - 更改 boost::asio::serial_port 的 DCB 结构

我想使用boost::asio::serial_port::set_option函数禁用 RTSControl。并且还可以提高或降低DTR线?

标准选项很好用,但我不知道如何改变 DCB结构,或者如何控制 RS232 信号线。

0 投票
2 回答
6663 浏览

c++ - 如何发送 std::vector使用 Boost::Asio?

在一天的大部分时间里,我一直在努力实现这一目标,我真诚地感谢任何帮助。我的两个应用程序、客户端和服务器都开始抛出“向量下标超出范围”异常。

如何正确地做这件事?


还在努力解决这个问题,有人吗?

据我所知,我应该创建一个

boost::asio::basic_stream_socket stream; 然后调用:

stream.send(boost::asio::buffer(data));?

我想完全有可能异步进行吗?basic_stream_socket::send(): vs. basic_stream_socket::write_some()vs.之间有什么区别 basic_stream_socket::async_write_some()

basic_stream_socket::receive()baic_stream_socket::read_some()对 对basic_stream_socket::async_read_some()?

我假设send()&receive()是我希望确保 100% 的数据被发送/接收时可以调用的方法 - 以阻塞套接字为代价?

我假设write_some()&read_some()是当我不确定是否 100% 的数据被发送/接收时我可以调用的方法 - 同时仍然阻塞套接字?

我假设async_read_some()&async_write_some()是不阻塞套接字的方法,它们可以读/写任何东西?