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

c++ - boost::asio::ip::tcp::socket 已连接?

我想在执行读/写操作之前验证连接状态。

有没有办法制作 isConnect() 方法?

我看到了这个,但它似乎“丑陋”。

我也测试了is_open()函数,但它没有预期的行为。

0 投票
1 回答
4374 浏览

c++ - 如何使用 Boost.Asio 解析主机(仅)?

根据为了解析主机的文档boost::asio::ip::tcp::resolver::query它也应该接受服务。

如果我想解析与端口无关的主机怎么办?我该怎么做呢?我应该指定虚拟端口吗?

0 投票
1 回答
1551 浏览

c++ - C++,boost asio,接收空终止字符串

如何使用 boost::asio 库从套接字中检索以空字符结尾的字符串?

0 投票
2 回答
1028 浏览

c++ - 是否可以用 Pimpl 包装升压插座?

在一个项目中,我们希望以某种方式包装 Boost Asio 套接字,使用类或包装 .h 不必包含 boost 标头。

我们通常对包装类使用指针和前向声明。

转发声明:

然后声明套接字:

(如果你不知道 scoped_ptr,忽略它,问题等同于标准 * 指针。)

但这会产生编译器错误:

我理解这是因为 udp 实际上不是命名空间,而是一个类本身。我们只想使用内部类,有什么想法吗?

0 投票
2 回答
10419 浏览

c++ - Boost Asio async_read 不会停止阅读?

所以,

我一直在玩 Boost asio 函数和套接字(特别是异步读/写)。现在,我认为boost::asio::async_read只有在从网络连接进入新缓冲区时才调用处理程序......但是它不会停止读取相同的缓冲区,因此会继续调用处理程序。我已经能够通过检查传输的字节数来缓解它,但是它基本上处于一个忙碌的等待循环中,浪费了 CPU 周期。

这是我所拥有的:

有些东西被剪掉了,但基本上一个新的连接被创建然后start()被调用。我是否缺少某些东西以使该handle_read方法不会被连续调用?

0 投票
1 回答
1240 浏览

c++ - boost asio:维护已连接客户端的列表

我正在寻找修改 Boost Asio HTTP Server 3 示例以维护当前连接的客户端列表的最佳方法。

如果我将示例中的 server.hpp 修改为:

然后我弄乱了连接对象的生命周期,这样它就不会超出范围并与客户端断开连接,因为它仍然在 ConnectionList 中维护了一个引用。

相反,如果我的 ConnectionList 被定义为,typedef std::vector< boost::weak_ptr< connection > > ConnectionList;那么当有人从GetClientList().

有人对这样做的好和安全的方法有什么建议吗?

谢谢,保罗

0 投票
1 回答
6140 浏览

c++ - 如何从本机套接字创建 Boost.Asio 套接字?

我只是想ip::tcp::socket从现有的本机套接字创建一个提升。在assign 函数中,第一个参数必须是“protocol_type”,第二个参数必须是“native_type”,但它从未解释这些是什么,也没有给出其使用示例。

我猜第二个应该是套接字描述符,但我真的很感激澄清。

0 投票
1 回答
1756 浏览

c++ - Boost.Asio 文档不存在。这些错误是什么意思?

我正在为 Boost.Asio 的两个错误而苦苦挣扎。

第一次发生在我尝试在套接字上接收数据时:

第二个发生在我尝试从(有效!)本机套接字创建 ip::tcp::socket 时:

有了所有这些麻烦,没有文档可以求助,我很想回到 BSD 套接字,但我在那里遇到了自己的问题......所以如果有人能提供帮助,我将非常感激。

编辑:关于数字 2,nativeSocket 是这样声明的:

之后,对套接字进行了一些其他操作——即,使用 ioctlsocket 将其设置为非阻塞,并对 SO_LINGER 和 SO_OOBINLINE 使用 setsockopt。

0 投票
2 回答
763 浏览

c++ - 使用 winsock.h 的库的问题

我有一个使用 Boost.Asio 和英特尔 IPP 库附带的媒体解码示例的项目。问题如下。如果我在没有定义的情况下编译项目WIN32_LEAN_AND_MEAN,Asio 会抱怨臭名昭著的“winsock.h 已包含”错误。如果我定义了宏,则另一个库中的标头具有未定义的类型,因为它依赖于 windows.h,包括 winsock.h。我尝试手动将 winsock.h 添加到该标头,但这让 Boost.Asio 再次大喊大叫。我能想到的唯一解决方案是遍历每个编译单元并确保始终首先包含 Asio。由于项目的规模和复杂性(以及该解决方案的丑陋),我想找到一种更好的方法。

提前致谢 !

0 投票
1 回答
682 浏览

sockets - 提升 asio udp waitForReadyRead

我正在尝试使用 boost asio udpSocket 实现一个函数,该函数等待数据准备好读取,或者等待超时到期。

使用 asyc_read 和 async_wait,我可以做类似的事情,但我必须读取数据。我想在不读取数据的情况下做同样的事情

这将允许在许多情况下更轻松地使用 udpSocket 类,但鉴于 udpSocket 接口,我无法弄清楚如何实现这样的功能,而无需手动缓冲数据并重写 sync_read 函数

最好的,dd