草庐IT

asio_handler_invoke

全部标签

c++ - boost::asio 从套接字读取 n 个字节到 streambuf

我有一个序列化结构,它通过套接字发送。我需要分块读取它,因为其中一个字段包含剩余数据的大小:我需要读取前几个字节,找出长度并读取其余部分。这是我得到的:boost::asio::streambufbuffer;boost::system::error_codeerr_code;//hereIneedtoreadonlyfirst16bytesboost::asio::read(socket,buffer,err_code);std::istreamis(&buffer);boost::archive::binary_iarchiveia(is);ia>>my_struct;我看过了bo

c++ - 我什么时候必须使用 boost::asio:strand

看了boost::asio的文档,还是不清楚什么时候需要用asio::strand。假设我有一个使用io_service的线程,那么按如下方式在套接字上写入是否安全?voidConnection::write(boost::shared_ptrmsg){_io_service.post(boost::bind(&Connection::_do_write,this,msg));}voidConnection::_do_write(boost::shared_ptrmsg){if(_write_in_progress){_msg_queue.push_back(msg);}else{_w

c++ - 为什么 Boost.Asio 不支持基于事件的接口(interface)?

我试图理解Boost.Asio,目的是潜在地使用条件变量结合Boost.Asio来实现信号系统。我看过其他StackOverflow问题boostasioasynchronouslywaitingonaconditionvariable,boost::asioasynccondition,和boostconditionvariableissue,但这些问题/答案都没有令人满意地触及我的一个基本问题:Isittruethatand/oristhereafundamentalreasonwhy,Boost.Asioisnotapplicableto,oranaturalfitwith,条件

c++ - 无法从 QQmlPropertyMap 的子类中的 QML 调用插槽或 Q_INVOKABLE

我正在尝试测试QQmlPropertyMap类。如果我可以将它子类化,它似乎可以很好地满足我的需求。文档here甚至给出了一些关于如何对其进行子类化的基本说明。所述文档还指出此类派生自QObject。为了它的值(value),我在带有QtQuick2.0的Qt5.0.0上使用QtCreator2.6.1。我的main.qml:importQtQuick2.0Rectangle{width:360height:360Text{text:owner.fieldanchors.centerIn:parent}MouseArea{anchors.fill:parentonClicked:{ow

c++ - Boost Asio io_service 析构函数卡在 OS X 上

我在OSX上使用BoostAsio时遇到问题,其中io_service析构函数有时无限期挂起。我有一个相对简单的重现案例:#include#includeintmain(intargc,char*argv[]){timevaltv;gettimeofday(&tv,0);std::time_tt=tv.tv_sec;std::tmcurr;//Thecalltogmtime_r_seems_innocent,butIcannotreproducewithoutthisstd::tm*curr_ptr=gmtime_r(&t,&curr);{boost::asio::io_service

c++ - 使用无效套接字调用 boost::asio::write() 使我的 Blackberry 10 应用程序崩溃

这篇文章讲述了在最近的一个软件项目中遇到的一个技术问题,并让读者从这个问题的来之不易的解决方案中受益。背景在我的公司,我是使用Boostasio("ASynchronousI/O")socketframework的内部库的实现者和维护者通过套接字实现跨平台数据传输。一位同事最近向我提出以下问题:如果在文件传输操作期间粗暴地关闭Wi-Fi路由器,她的Blackberry10应用程序会在几秒钟内崩溃,该应用程序链接并使用了我的图书馆。在库中启用内置跟踪向我们展示了当库调用boost::asio::write(boost::asio::ip::tcp::socket*,boost::asio

c++ - 如何检查 Boost::asio 中是否存在套接字连接?

我正在使用Boost::asio来实现客户端/服务器应用程序。下面的客户端代码用于连接到远程服务器。try{boost::asio::io_servicem_io_service;boost::asio::ip::tcp::socketm_socket(m_io_service);boost::asio::ip::tcp::endpointendpoint(boost::asio::ip::address::from_string("127.0.0.1"),17);m_socket.connect(endpoint);}catch(std::exception&e){std::cerr

C++ Boost.ASIO async_read_until 慢

我遇到了一个不寻常的问题。我有一个C++Boost.ASIO网络服务器,为了处理传入的请求,我正在使用以下代码:boost::asio::async_read_until(socket_,response_,"\r\n\r\n",boost::bind(&connection::handle_read_headers,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));(其中“socket_”是我的boost::asio::ip::tcp::

c# - 将函数从 C++ dll 导出到 C# P/Invoke

我已经构建了一个C++dll,我想从C#代码调用它。我能够调用一个函数,但另一个在C#代码尝试加载dll时引发异常。标题看起来像这样:extern"C"__declspec(dllexport)BOOLInstall();extern"C"__declspec(dllexport)BOOLPPPConnect();这会生成一个带有稍微困惑的导出表的dll(名称字段中的foo=foo是什么意思?):FileType:DLLSectioncontainsthefollowingexportsforPPPManager.dll00000000characteristics499F44F0ti

c++ - boost::asio::buffer:获取缓冲区大小并防止缓冲区溢出?

我有以下两个发送和接收数据包的函数。voidsend(std::stringprotocol){char*request=newchar[protocol.size()+1];request[protocol.size()]=0;memcpy(request,protocol.c_str(),protocol.size());request_length=std::strlen(request);boost::asio::write(s,boost::asio::buffer(request,request_length));}voidreceive(){charreply[max_l