问题标签 [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.
c++ - 如何使用 Boost.Asio 解析主机(仅)?
根据为了解析主机的文档,boost::asio::ip::tcp::resolver::query
它也应该接受服务。
如果我想解析与端口无关的主机怎么办?我该怎么做呢?我应该指定虚拟端口吗?
c++ - C++,boost asio,接收空终止字符串
如何使用 boost::asio 库从套接字中检索以空字符结尾的字符串?
c++ - 是否可以用 Pimpl 包装升压插座?
在一个项目中,我们希望以某种方式包装 Boost Asio 套接字,使用类或包装 .h 不必包含 boost 标头。
我们通常对包装类使用指针和前向声明。
转发声明:
然后声明套接字:
(如果你不知道 scoped_ptr,忽略它,问题等同于标准 * 指针。)
但这会产生编译器错误:
我理解这是因为 udp 实际上不是命名空间,而是一个类本身。我们只想使用内部类,有什么想法吗?
c++ - Boost Asio async_read 不会停止阅读?
所以,
我一直在玩 Boost asio 函数和套接字(特别是异步读/写)。现在,我认为boost::asio::async_read
只有在从网络连接进入新缓冲区时才调用处理程序......但是它不会停止读取相同的缓冲区,因此会继续调用处理程序。我已经能够通过检查传输的字节数来缓解它,但是它基本上处于一个忙碌的等待循环中,浪费了 CPU 周期。
这是我所拥有的:
有些东西被剪掉了,但基本上一个新的连接被创建然后start()
被调用。我是否缺少某些东西以使该handle_read
方法不会被连续调用?
c++ - boost asio:维护已连接客户端的列表
我正在寻找修改 Boost Asio HTTP Server 3 示例以维护当前连接的客户端列表的最佳方法。
如果我将示例中的 server.hpp 修改为:
然后我弄乱了连接对象的生命周期,这样它就不会超出范围并与客户端断开连接,因为它仍然在 ConnectionList 中维护了一个引用。
相反,如果我的 ConnectionList 被定义为,typedef std::vector< boost::weak_ptr< connection > > ConnectionList;
那么当有人从GetClientList()
.
有人对这样做的好和安全的方法有什么建议吗?
谢谢,保罗
c++ - 如何从本机套接字创建 Boost.Asio 套接字?
我只是想ip::tcp::socket
从现有的本机套接字创建一个提升。在assign 函数中,第一个参数必须是“protocol_type”,第二个参数必须是“native_type”,但它从未解释这些是什么,也没有给出其使用示例。
我猜第二个应该是套接字描述符,但我真的很感激澄清。
c++ - Boost.Asio 文档不存在。这些错误是什么意思?
我正在为 Boost.Asio 的两个错误而苦苦挣扎。
第一次发生在我尝试在套接字上接收数据时:
第二个发生在我尝试从(有效!)本机套接字创建 ip::tcp::socket 时:
有了所有这些麻烦,没有文档可以求助,我很想回到 BSD 套接字,但我在那里遇到了自己的问题......所以如果有人能提供帮助,我将非常感激。
编辑:关于数字 2,nativeSocket 是这样声明的:
之后,对套接字进行了一些其他操作——即,使用 ioctlsocket 将其设置为非阻塞,并对 SO_LINGER 和 SO_OOBINLINE 使用 setsockopt。
c++ - 使用 winsock.h 的库的问题
我有一个使用 Boost.Asio 和英特尔 IPP 库附带的媒体解码示例的项目。问题如下。如果我在没有定义的情况下编译项目WIN32_LEAN_AND_MEAN
,Asio 会抱怨臭名昭著的“winsock.h 已包含”错误。如果我定义了宏,则另一个库中的标头具有未定义的类型,因为它依赖于 windows.h,包括 winsock.h。我尝试手动将 winsock.h 添加到该标头,但这让 Boost.Asio 再次大喊大叫。我能想到的唯一解决方案是遍历每个编译单元并确保始终首先包含 Asio。由于项目的规模和复杂性(以及该解决方案的丑陋),我想找到一种更好的方法。
提前致谢 !
sockets - 提升 asio udp waitForReadyRead
我正在尝试使用 boost asio udpSocket 实现一个函数,该函数等待数据准备好读取,或者等待超时到期。
使用 asyc_read 和 async_wait,我可以做类似的事情,但我必须读取数据。我想在不读取数据的情况下做同样的事情
这将允许在许多情况下更轻松地使用 udpSocket 类,但鉴于 udpSocket 接口,我无法弄清楚如何实现这样的功能,而无需手动缓冲数据并重写 sync_read 函数
最好的,dd