草庐IT

asio-acceptor

全部标签

c++ - boost asio tcp - 套接字写入数据不同于缓冲区中的数据 - 某处可能存在线程不安全

我正在探索boostasio产品客户端发送一个1字节的header,指示后面的字节长度。相关服务器代码:enum{max_length=1};voidhandle_read(constboost::system::error_code&error,constsize_t&bytes_transferred){if(!error){++ctr;std::stringinc_data_str(this->inc_data.begin(),this->inc_data.end());std::cout(inc_data_str);intoffset=0;//std::coutnext_inc

c++ - 服务器关闭时客户端上的 boost asio 写入操作被阻止

我想使用boost::asio实现一个同步tcp客户端。场景:client:同步tcpclient,循环向server发送数据服务器:从客户端接收数据并且当套接字不可用时可以重建连接。客户端io_serviceios;shared_ptrsp_sock(newsocket(ios));endpointep(address,port);error_codeec;sp_sock->connect(ep,ec);if(ec){return;}for(;;){error_codeec;boost::asio::write(*sp_sock,buffer("helloworld"),ec);if

c++ - 当 boost::asio::io_service 运行方法阻塞/解除阻塞时感到困惑

作为Boost.Asio的初学者,我对io_service::run()感到困惑.如果有人可以向我解释此方法何时阻止/解除阻止,我将不胜感激。文件指出:Therun()functionblocksuntilallworkhasfinishedandtherearenomorehandlerstobedispatched,oruntiltheio_servicehasbeenstopped.Multiplethreadsmaycalltherun()functiontosetupapoolofthreadsfromwhichtheio_servicemayexecutehandlers.

Windows 提升 asio : 10061 in async_receive_from on on async_send_to

我有一个相当大的应用程序,可以在Linux上正常运行。我最近使用VC2012和boostasio1.52在Windows7上编译它并遇到了一个奇怪的问题:async_receive_from后跟async_send_to在同一UDP套接字上导致读取完成处理程序被调用boost::system::error_code10061:Noconnectioncouldbemadebecausethetargetmachineactivelyrefusedit如果发送目的地是本地主机上的另一个端口。如果将数据包发送到另一台机器,则不会调用读取完成处理程序。在读取完成处理程序之后,写入完成处理程序

c++ - 添加 #include <boost/asio.hpp> 导致 "has different size"问题

在编写(到目前为止)非常简单的C++应用程序时(实际上我刚刚开始将我们的应用程序从Qt迁移出来并主要通过boost替换它的功能)我遇到了如下“常见”错误:(pathtrimmed)\libboost_system.a(error_code.o):duplicatesection.rdata$_ZTSN5boost12noncopyable_11noncopyableE[__ZTSN5boost12noncopyable_11noncopyableE]'hasdifferentsize(pathtrimmed)\libboost_filesystem.a(codecvt_error_ca

c++ - 如何复制或重用 boost::asio::streambuf?

我在boostasio上实现带有一些业务逻辑的http代理服务器。在第(1)点中,boost::asio::streambufresponse_包含httpheader和部分http正文。用http_response::parse解析后,缓冲区boost::asio::streambufresponse_为空。在(2)处,我检查所有业务逻辑并读取正文,如果header中有Content-Lengthheader。如果response_数据符合特定条件,我想将原始response_缓冲区发送到另一个套接字(3)。问题是解析后缓冲区为空。有没有办法复制boost::asio::stream

c++ - boost::asio::io_service::poll() 的问题

以下代码:/***************************************************************************/boost::mutexm;structfunc{func(intv):n(v){}voidoperator()(){{boost::mutex::scoped_lockl(m);std::cout给出这样的输出:**beforerun**runfunction0function0,ping0function0,ping1function0,ping2function0,ping3runfunction1function1,

c++ - 在 Boost.Asio 中获取 HTML 内容的简单界面

有很多示例如何向服务器发出HTTP请求并通过boost.asio库获得回复。但是,我找不到简单接口(interface)的好例子,想知道是否需要自己实现它。例如,如果我需要获取http://www.foo.bar/path/to/default.html的内容,有什么方法可以在不验证URL、发出HTTP请求和解析服务器应答的情况下获取内容?基本上,我正在寻找这样的东西:std::stringstr=boost::asio::get_content("http://www.foo.bar/path/to/default.html");std::coutSimpleHTMLpage!使用b

c++ - asio::async_write 在大容量流上同步非常困难

我目前正在使用AsioC++库并围绕它编写了一个客户端包装器。我最初的方法是非常基本的,只需要在一个方向上流动。要求已经改变,我已经切换到使用所有异步调用。除了asio::async_write(...)之外,大多数迁移都很容易。我使用了几种不同的方法,但不可避免地会遇到每一种方法的僵局。应用程序连续地传输大量数据。我一直远离strands,因为它们不会阻塞并且会导致内存问题,尤其是当服务器负载很重时。作业将备份并且应用程序堆无限增长。所以我创建了一个阻塞队列只是为了找出在回调和/或阻塞事件之间使用锁会导致未知行为的困难方法。包装器是一个非常大的类,所以我将尝试解释我目前状态下的景观,

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

我在使用Boost.Asio时遇到两个错误。第一个发生在我尝试在套接字上接收数据时:charreply[1024];boost::system::error_codeerror;size_treply_length=s.receive(boost::asio::buffer(reply,1024),0,error);if(error)cout第二个发生在我尝试从(有效!)native套接字创建ip::tcp::socket时:boost::asio::io_serviceioserv;boost::asio::ip::tcp::sockets(ioserv);boost::system