草庐IT

asio-acceptor

全部标签

c++ - boost :asio. 从服务器下载镜像文件

我正在尝试从HTTP服务器的响应中保存图像文件(gif),但该文件未正确保存。我正在使用boost网页中的同步代码示例,我得到了一个文件,但它与您在网络浏览器中看到的文件不同。在此处查看原始文件(WMS服务器):http://demo.lizardtech.com/lizardtech/iserv/ows?SERVICE=WMS&REQUEST=GetMap&LAYERS=LACounty,&STYLES=&BBOX=314980.5,3624089.5,443200.5,3861209.5&SRS=EPSG:26911&FORMAT=image/gif&HEIGHT=300&WIDT

c++ - 在 Boost.Asio Stackful Coroutine 中产生

当使用Boost.Asio堆栈协程时,我如何“手动”让出以便另一个协程或异步操作有机会运行?例如,在发送对从TCP套接字接收到的命令的响应之前,我需要执行长时间的计算:asio::spawn(strand_,[this,self](asio::yield_contextyield){chardata[256];while(socket_.is_open()){size_tn=socket_.async_read_some(boost::asio::buffer(data),yield);if(startsWith(data,"computePi")){while(!computatio

c++ - Boost.Asio SSL 线程安全

我是创建一个所有SSL套接字共享的链,还是每个SSL上下文创建一个链(由任何关联的套接字共享)?Boost.AsioSSL文档说明了这一点,但没有提到上下文。我认为这意味着我必须只对所有内容使用一条链,但我认为这是在OpenSSL支持多线程之前编写的。SSLandThreadsSSLstreamobjectsperformnolockingoftheirown.Therefore,itisessentialthatallasynchronousSSLoperationsareperformedinanimplicitorexplicitstrand.Notethatthismeanst

c++ - Boost::asio async_write_some 与 async_send

我刚才才注意到boost::asio中的async_write_some和async_send(第二次重载)函数是完全一样的:async_write_some定义:...templateBOOST_ASIO_INITFN_RESULT_TYPE(WriteHandler,void(boost::system::error_code,std::size_t))async_write_some(constConstBufferSequence&buffers,BOOST_ASIO_MOVE_ARG(WriteHandler)handler){//Ifyougetanerroronthefo

c++ - boost asio udp 套接字 async_receive_from 不调用处理程序

我想创建一个自治线程,专门用于使用boost库(asio)从UDP套接字接收数据。这个线程应该是一个无限循环,由从UDP套接字接收到的一些数据触发。在我的应用程序中,我需要使用异步接收操作。如果我使用同步函数receive_from,一切都会按预期工作。但是,如果我使用async_receive_from,则永远不会调用处理程序。由于我使用信号量来检测是否已接收到某些数据,因此程序锁定并且永远不会触发循环。我已经(使用网络分析器)验证发送方设备在UDP套接字上正确发送数据。我已在以下代码中找出问题。#include#include#include#include#includetype

c++ - boost Asio : Some questions about the tutorial (A synchronous daytime server/client)

我正在尝试使用BoostAsio而不是RakNet,所以我试图按照Boost网站上的示例进行操作,但我有一些问题没有得到解答。这是链接:http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime1.html请注意,我的教程在客户端和服务器上都有效。1)为什么查询需要字符串“daytime”?在服务器设置中找不到它。客户端似乎只在我使用该字符串时连接。(尝试使用“测试”但未连接)2)为什么我不需要给客户端一个连接端口?它是自己搜索这个端口还是在那里并选择手动设置它?提前致谢。

c++ - 一直读到 boost::asio::streambuf 中的字符串定界符

我想使用非常方便的Boostasync_read_until阅读消息,直到我得到\r\n\r\n分隔符。我喜欢使用这个定界符,因为它很容易使用telnet进行调试并制作多行命令。我只是用两个新行表示命令结束。我这样调用async_read_until:voiddo_read(){boost::asio::async_read_until(m_socket,m_input_buffer,"\r\n\r\n",std::bind(&player::handle_read,this,std::placeholders::_1,std::placeholders::_2));}我的处理程序现在

c++ - boost::asio:如何使用 async_accept 接受传入连接?

我正在使用boost::asio,我有这样的代码:voidCServer::Start(intport){tcp::acceptoracceptor(m_IoService,tcp::endpoint(tcp::v4(),port));for(;;){shared_ptrpSocket(newtcp::socket(m_IoService));acceptor.accept(*pSocket);HandleRequest(pSocket);}}此代码有效,但我想切换到使用Acceptor::async_accept以便我可以调用Acceptor::cancel来停止接收请求。所以我的新

c++ - boost .asio : can I do async_read and async_write simultaneously from one thread?

我读到不建议对来自不同线程的套接字进行多项操作。但是,如果我从同一个线程socket.async_read和下一个socket.async_write调用(不等待前一个完成)怎么办?当其中一个操作完成时,我可以期望正确的回调会运行吗? 最佳答案 我发现是的,您可以在同一个套接字上有一个挂起的async_read和一个挂起的async_write而不会出现问题。当您调用io_service::run()方法时,回调将按预期完成。在同一个套接字上发出多个async_reads,或在同一个套接字上发出多个async_writes,可能会导

c++ - boost asio 服务器在关闭 boost::socket 的调用中挂起

下面是我使用boostasio的套接字服务器示例代码。此服务器将在端口10001上等待任何客户端连接。当任何客户端连接时,它将启动线程以从该客户端读取并等待另一个客户端。但是,当我的客户端断开连接时,服务器套接字卡在my_socket->close()调用中会发生什么。如果新客户端尝试连接服务器崩溃。我正在使用g++(Ubuntu4.4.3-4ubuntu5.1)4.4.3#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;usingboost