草庐IT

asio_handler_invoke

全部标签

c++ - boost::asio::acceptor - 在旧连接仍然打开时接受新的传入连接

我正在编写基于boostasio的代理服务器。在负责接受从浏览器到代理服务器的传入连接的代码部分,我面临着我不完全理解的行为。所以-我正在使用下一个构造函数创建接受器对象:_acceptor(_io_service,boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(),port),true)从这里开始收听(start_accept):_new_connection.reset(newconnection(*_io_services.front(),_connection_id));_acceptor.async_accept

c++ - 如何使用 boost::asio 即时更改串行端口速度(或如何确定硬件缓冲区是否为空)?

我在使用boost::asio和boost::asio::serial_port设备时遇到了一个特殊问题。代码终于可以很好地处理异步读取和其他内容,但我不知道如何即时更改串行端口的速度。我现在想做的只是告诉连接到我的串行端口的设备将串行端口速度更改为38400波特,然后我通过以下方式将我的计算机串行端口设置为相同的速度:port_.set_option(boost::asio::serial_port_base::baud_rate(rate));但真正发生的是,如果我执行set_option部分,设备永远不会收到更改速度的命令。如果我不执行set_option部分,设备会正确改变速度

c++ - boost asio 套接字是否有适当的 RAII 清理

我尝试查看源代码,但无法浏览那么多模板代码。基本上:这是文档所说的(对于close()):RemarksForportablebehaviourwithrespecttogracefulclosureofaconnectedsocket,callshutdown()beforeclosingthesocket.我可以手动完成,但如果可能的话,依靠RAII会更好。因此,如果套接字超出范围,我是否需要对其调用shutdown()和close(),或者它会自动完成? 最佳答案 可以依靠套接字使用RAII执行适当的清理。当一个IO对象,比如

c++ - boost.asio 套接字接收/发送功能不好吗?

DatamaybereadfromorwrittentoaconnectedTCPsocketusingthereceive(),async_receive(),send()orasync_send()memberfunctions.However,asthesecouldresultinshortwritesorreads,anapplicationwilltypicallyusethefollowingoperationsinstead:read(),async_read(),write()andasync_write().我真的不明白read()、async_read()、wri

c++ - 动态大小的 boost::asio::buffer

我正在像这样从boost::asio::ip::udp::socket读取数据:usingboost::asio::ip::udp;//...charrecv_buf[128];udp::endpointsender_endpoint;size_tlen=socket.receive_from(boost::asio::buffer(recv_buf),sender_endpoint);现在,这工作得很好,但我现在能够接收的最大字符数是127。但是我遇到了一个问题,因为我需要接受一些长度可能变化很大的数据输入(并且是例如,不是带有前缀header的明确定义的长度)。对此的解决方案是动态

c++ - 什么是 boost::asio::ssl::context::load_verify_file 以及如何使用它?

有少量的boost::asio::ssl在线小型C++教育代码库。在boost::asio::ssl::context::load_verify_file上就更少了所以我从here找到了一个修改最少的代码-使用boost1.47.0编译和运行:#include#include#include#include#include#include#includeclassclient{public:client(boost::asio::io_service&io_service,boost::asio::ssl::context&context,boost::asio::ip::tcp::r

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

根据documentationboost::asio::ip::tcp::resolver::query为了解析它应该接收服务的主机如果我想解析与端口无关的主机怎么办?我到底应该怎么做?应该我指定虚拟端口? 最佳答案 在onepostintheboostmailinglist其他人似乎是这样做的(复制、重新格式化、更改服务编号,没有别的):namespacebai=boost::asio::ip;bai::tcp::endpointep(bai::address_v4(0xD155AB64),0);//209.85.171.100:

c++ - Boost asio ConstBufferSequence - C++ 模板

我希望获得有关C++模板的一些指导。我一直在使用boost::asio库通过TCP进行通信。到目前为止,我一直在使用内置于boost::asio库中的存储容器。例如:boost::arraybuf;boost::system::error_codeerror;size_tlen=socket.read_some(boost::asio::buffer(buf),error);要从套接字读取数据,我只需将boost::asio::buffer类型的缓冲区包裹在我的boost::array对象周围。这工作正常,但现在我想在相反的方向工作。也就是说,我想写回套接字,从我已有的一些自定义存储类

c++ - Boost、asio、https 和主机/证书验证

我正在查看Boost的SSLClient.评论中提到了OpenSSL(抱歉,没有行号)://Theverifycallbackcanbeusedtocheckwhetherthecertificatethatis//beingpresentedisvalidforthepeer.Forexample,RFC2818describes//thestepsinvolvedindoingthisforHTTPS.ConsulttheOpenSSL//documentationformoredetails.Notethatthecallbackiscalledonce//foreachcert

c++ - boost::asio 在没有 WLAN 的情况下无法连接到本地主机

在我的电脑(SurfacePro2)上,只有一个网络适配器,它是一个无线LAN适配器。我在一个小型C++项目上工作,它使用boost::asio连接到本地主机并执行它的工作,一切都很好。但是今天我发现,如果我断开WLAN与互联网的连接,这个程序不工作。boost::asio的解析器将抛出异常:tcp::resolver::queryquery("localhost","10127");tcp::resolverresolver(io_service_);tcp::resolver::iteratoriterator;try{iterator=resolver.resolve(query