boost-asio相关内容
基于Boost::ASIO客户端/服务器关系,只有当服务器线程处于“正在等待连接”状态时,我才必须从服务器程序启动客户端程序。 我的问题是如何了解这种状态? 作为示例使用asio example/serialization link,并将server.cpp的main函数替换为该代码: #include #include // wait
..
..
我试图学习如何使用 Boost.ASIO 和 Windows API 重新分配接受的连接.发现 此代码示例 添加到其中包括和使用命名空间,所以现在是可编译 - 只需复制并粘贴即可...“参数不正确"异常在同一个地方代码海报有它=(所以这里是代码: #include #include #ifdef _WIN32#include "Windows.
..
如果之前已经回答了这个问题,我提前道歉,但我已经搜索并没有发现任何对我有帮助的东西.如问题标题所示,我正在尝试将一个包从服务器广播到一组侦听任何消息的客户端. 客户端会统计它在一秒内收到的消息数. 服务器端是这样的: 类服务器{上市:服务器(boost::asio::io_service& io): 套接字(io, udp::endpoint(udp::v4(), 8888)), 广
..
Boost asio 特别允许多个线程调用 io_service 上的 run() 方法.这似乎是创建多线程 UDP 服务器的好方法.但是,我遇到了一个我正在努力寻找答案的障碍. 看一个典型的 async_receive_from 调用: m_socket->async_receive_from(boost::asio::buffer(m_recv_buffer),m_remote_end
..
我有一个服务器,它收集信息并通过本地网络广播一些消息.我正在使用 boost::asio 在端口 8079 上通过 UDP 广播这些数据包,我可以使用 WireShark 验证这些数据包实际上是按预期广播的. 现在,很自然地,我想跟进一个可以对这些消息做出反应的听众,但我很难收到任何东西.我目前的做法是: boost::asio::io_service io_service;boost::
..
我最近通过浏览网络了解了 UDP 套接字,所有解释它的页面都提到 UDP 套接字“连接较少".如果我理解正确,这意味着一个在两个套接字之间没有“连接",而是在不知道另一端是否正在侦听的情况下将数据报包发送到指定的端点. 然后我开始阅读 boost::asio::ip::udp::socket docs 并发现它提到的 API 如下: async_connect:启动异步connect.
..
有时 boost::asio 似乎在我想要它之前断开连接,即在服务器正确处理断开连接之前.我不确定这是怎么可能的,因为客户端似乎认为它完全发送了消息,但是当服务器发出错误时,它甚至没有读取消息头......在测试期间,这可能只发生五分之一,服务器收到客户端关闭消息,并干净地断开客户端. 错误:“现有连接被远程主机强行关闭" 客户端断开连接: void disconnect(){boo
..
我使用 boost::asio::read (或者可能是等效的 async_read) 从套接字读取一些数据. 是否可以将读取的字节保留在底层套接字中,以便下次在套接字上调用 read 时再次收到该数据? 解决方案 就像 Simon 说的,你不能用 boost::asio::read() (或 boost::asio::async_read()).但是,对于 read() 您可以在套
..
boost::asio::ip::tcp::socket 的析构函数究竟做了什么?即使在搜索 Boost 文档和源代码之后,我也无法判断是否需要使用 socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);套接字->关闭(); 打电话之前 删除套接字; 我需要手动关闭套接字,还是由析构函数处理? 解决方案 当一个s
..
我只是想从现有的本机套接字创建一个 boost ip::tcp::socket.在 assign 函数中,第一个参数必须是“protocol_type",第二个参数必须是“native_type",但它从不解释它们是什么或给出其使用示例. 我猜第二个应该是套接字描述符,但我非常感谢澄清. void SendData (int socket, std::string message){boo
..
我正在尝试从串行端口异步读取几个字节.目前我正在使用的代码(来源是 我该如何执行使用 asio 进行非阻塞读取?),只允许我读取 1 个字节然后退出.如何获取它以使代码继续读取,直到串行端口中没有更多传入数据?谢谢:) void foo(){boost::asio::io_service io_svc;boost::asio::serial_port ser_port(io_svc, "/de
..
我正在编写一些使用 boost::asio 类读写串行设备的代码.但是,在程序之间发送多个字符串时,我注意到在接收程序上,数据是按照写入串行端口的顺序读取的,而不是从其他程序发送的数据 - 如果我开始阅读几秒钟后的数据,我没有得到我现在发送的值,而是那些以前发送的值.我假设这是由我设置 boost::asio::serial_port: 的方式引起的 int main(int argc, ch
..
我想使用 boost.asio 检查串行端口上的传入数据包.每个数据包都以一个字节长的标头开始,并指定已发送的消息类型.每种不同类型的消息都有自己的长度.我要编写的函数应该不断地监听新的传入消息,当它找到一个它应该读取它,并调用其他函数来解析它.我目前的代码如下: void check_for_incoming_messages(){boost::asio::streambuf 响应;boost
..
我需要知道如何在超时时读取(同步或异步无关紧要).我想检查设备是否与串行端口连接. 为此,我使用 asio::write 然后等待设备的响应. 如果连接了设备 asio::read(serial, boost::asio::buffer(&r,1)) 工作正常,但如果没有设备,程序会停止,这这就是为什么我需要超时 我知道我需要一个 deadline_timer 但我不知道如何在
..
这是我的 Boost.Asio 项目基于示例的 SSCCE.我花了大约一个小时来跟踪这个错误: #include #include #include 类连接{上市:连接(boost::asio::io_service& io_service):socket(io_service){}私人的
..
我正在尝试学习一点 C++ 和 Boost.Asio.我正在尝试编译以下代码示例: #include #include #include 使用 boost::asio::ip::tcp;int main(int argc, char* argv[]){尝试{如果 (argc != 2){std::cerr
..
这个问题是 应该我在 Android 中选择 Boost Asio 或 Aysnc Socket 线程?问, Boost 库旨在广泛使用,并可用于各种应用程序,但目前还没有针对 Android 和 iOS 的官方支持 类似的背后有什么具体原因没有优化嵌入式设备?还是其他原因? 是否有人知道在 Android 或 iOS 上使用 Boost 构建的任何应用程序? 对于产生多个通信线程
..
boost::asio::io_service::run() 在发生错误时抛出 boost::system::system_error 异常.我应该处理这个异常吗?如果是,怎么办? 我的 main.cpp 代码是这样的: main(){boost::asio::io_service 队列;boost::asio::io_service::work 工作(队列);{//设置一些处理程序...
..
我在使用 protobuf 进行进程间通信时遇到了一些问题.Protobuf 允许一组序列化格式: SerializeToArray(void * data, int size) : boolSerializeToCodedStream(google::protobuf::io::CodeOutputStream * output) : boolSerializeToFileDescriptor
..