草庐IT

boost-pool

全部标签

c++ - Boost套接字 - 客户端没有从服务器接收所有字节

我正在使用C++开发应用程序,但在使用boost套接字时遇到了一些困难。服务器发送图像,但并非所有字节都被客户端接收;客户端总是收到比服务器发送的少大约500个字节。下面提供程序运行的相关代码和截图。服务器代码:intsent=boost::asio::write(*socket,response,boost::asio::transfer_all(),error);std::cout客户端代码(我知道如果服务器发送的总字节数能被10000整除,read_some会阻塞;此代码仅用于测试):intlen=0;intcount=0;do{len=socket->read_some(boo

c++ - Boost mpl 转换序列 "real"类型

请参阅boostmpl转换文档中的以下代码:typedefvectortypes;typedefvectorpointers;typedeftransform>::typeresult;BOOST_STATIC_ASSERT((equal::value));我想了解boost::mpl的类型系统以及“它实际上是如何工作的”。据我了解,mpl::equal只是比较以下两个序列的元素,而不是整个序列类型本身。我不明白为什么以下失败:BOOST_STATIC_ASSERT((std::is_same::value));//为什么结果类型与“指针”类型不是100%相同?我认为这是某种原因,因为

c++ - 如何使用 boost::spirit 验证代数语句?

我正在尝试扩展calculatorexample因此,解析器将确定代数语句是否为真,而不是解析和评估代数表达式。我的意思是这样的语句1+5*5-10=19-3(期望的解析器结果是true)和3-1=9(所需的解析器结果为false)。我必须承认我是boost::spirit的新手,目前我有点不知所措。但是,我确实觉得我对计算器示例的理解足够好,至少可以取得一些进展。使用提供的示例作为起点,语法如下所示:calculator():calculator::base_type(expression){usingqi::uint_;usingqi::_val;usingqi::_1;expre

c++ - 在 C++ Builder 中编译 Boost 库时的警告

当我尝试包含时收到警告在C++生成器中。对于我包含的每个单元,C++Builder都会显示这两行:thread_heap_alloc.hpp(59):W8128Can'timportafunctionbeingdefinedthread_heap_alloc.hpp(69):W8128Can'timportafunctionbeingdefined已经尝试了一些东西,但没有任何效果。它编译正确,但是,它让我很紧张。为什么显示此消息?行是:#includenamespaceboost{namespacedetail{inlineBOOST_THREAD_DECLvoid*allocate

c++ - boost asio 以写入文件

我想异步写入文件。我有一个带有函数的类,该函数接受vector和文件名,并将其发送到文件。这个函数可以从类外被调用几千次。我想执行写异步的原因是......调用者可以只请求写,然后不必担心或等待写完成。我没有使用套接字、tcp...我正在研究boost::asio,试图找到例子——我能找到的都是使用网络的例子:http://liveworkspace.org/code/3R3RUd%240SerializeandsendadatastructureusingBoost?boost::asioasync_readguaranteeallbytesareread还有更多。有人可以推荐一个文

c++ - 可以在运行时在不同的 Boost 伪随机数生成器之间进行选择吗?

我正在使用BoostRandom库为蒙特卡罗模拟生成随机数。为了检查我的结果,我希望能够为不同的运行使用不同的RNG引擎。理想情况下,我想使用命令行选项来确定在运行时使用哪个RNG,而不是例如在编译时通过typedef选择RNG。是否有一个基类T使得类似下面的事情成为可能;或者,如果不是,为什么不这样做的明显原因?#includeintmain(){unsignedcharrng_choice=0;T*rng_ptr;//base_classpointercanpointtoanyRNGfromboost::randomswitch(rng_choice){case0:rng_ptr=

c++ - Boost Spirit 报错

我的解析器语法底部有以下错误处理程序:qi::on_error(launch,std::cerr(spirit::_3,spirit::_2)问题是解析器的输入没有事先被新行打断,因此生成的错误语句将是源代码中从错误点到结尾的所有行。有没有直接的替代方法phoenix::construct(spirit::_3,spirit::_2)只打印发生错误的那一行?如果我尝试只搜索'\n',Phoenix语义给我带来了麻烦。 最佳答案 我们需要创建一个可以接受Spirit参数的Phoenix函数。//lazyfunctionforerror

c++ - 在 boost::spirit::qi 中,是否可以在运行时动态修改规则定义

我用boost::spirit::qi::rule写了一些语法来解析互联网数据包。语法是这样的:qi::rulestart,request,response,status,query;start=(request|response|status|query)>>lit("\r\n");为了boost性能,用户可能希望在运行时跳过一些规则,例如忽略“response”、“status”、“query”,只尝试匹配请求,因此规则将更改为:start=(request)>>lit("\r\n");这有可能吗?例如,是否有像“disable()”这样的函数来禁用规则“re​​sponse”、“

c++ - boost fusion 和 boost qi - 编译时错误

我无法编译以下代码:#include#include#includestructfunction{std::stringret_type;std::stringname;};BOOST_FUSION_ADAPT_STRUCT(function,(std::string,ret_type)(std::string,name))intmain(){}带有boost1.54的MSVC-11.0给我以下错误:1>main.cpp(6084):errorC3203:'function':unspecializedclasstemplatecan'tbeusedasatemplateargumen

c++ - 使用 boost::asio 连接到 HTTPS 服务器

我想使用boost::asio连接到HTTPS服务器。我成功地与服务器握手,但我就是无法让服务器响应我的POST请求。这是相关代码(我省略了调试和try-catch以节省一些空间):HTTPSClient::HTTPSClient(){ssl::contextcontext(ssl::context::sslv23);context.set_verify_mode(ssl::verify_peer);context.set_default_verify_paths();context.load_verify_file("certificate.pem");mSSLSocket=news