草庐IT

BOOST-ASIO

全部标签

c++ - 刷新 boost::iostreams::zlib_compressor。如何获得 "sync flush"?

获得"zlibsyncflush"需要一些魔法吗?使用boost::iostreams::zlib_compressor时?只是在过滤器上调用flush,或者在包含它的filtering_ostream上调用strict_sync并不能完成这项工作(即我希望压缩器冲洗足够多,解压缩器可以恢复压缩器到目前为止消耗的所有字节,而无需关闭流)。查看header,似乎定义了一些“刷新代码”(特别是sync_flush),但我不清楚它们应该如何使用(记住我的压缩器刚刚添加到filtering_ostream)。 最佳答案 事实证明,symme

c++ - 需要解释这个 boost::asio 计时器示例

在Boostasio的第3教程中有一行显示了如何更新计时器并防止其漂移。该行如下:t->expires_at(t->expires_at()+boost::posix_time::seconds(1));也许是我的问题,但我找不到关于expires_at()第二次使用的文档,没有参数。expires_at(x)设置新的到期时间,取消任何未决的完成处理程序。所以大概expires_at()做了什么,最后一次到期的返回时间?因此,通过增加一秒,如果应该有一定数量的毫秒,比如n毫秒,那么它实际上会从下一个到期时间中“减去”,因为时间正在计算中?如果在此示例中执行此处理程序所需的时间大于1秒,

c++ - boost::python 字符串可转换属性

我有一个C++类,它有以下方法:classBar{...constFoo&getFoo()const;voidsetFoo(constFoo&);};其中类Foo可转换为std::string(它有一个来自std::string的隐式构造函数和一个std::string转换运算符)。我定义了一个Boost.Python包装器类,除其他外,它定义了一个基于前两个函数的属性:class_("Bar")....add_property("foo",make_function(&Bar::getFoo,return_value_policy()),&Bar::setFoo)...我还将该类标记

c++ - 为什么此 Boost ASIO 代码不能与此 python 客户端一起使用?

此代码与原始的udp异步回显服务器相同,但具有不同的套接字。响应已传输并显示在wireshark中,但随后将ICMP端口无法访问错误发送回服务器。我试图理解为什么,因为一切看起来都是正确的。您可以将此代码直接复制到源文件中,例如服务器.cpp。然后编译gccserver.cpp-lboost_system使用如下命令运行它:./a.out35200#include#include#include#includeusingboost::asio::ip::udp;classserver{public:server(boost::asio::io_service&io_service,sh

c++ - boost::multi_index_container::index<Tag>::type 有什么意义?

如果你有一个boost::multi_index_container对于多个索引,显然有多种方法可以对其进行迭代——每个索引都定义了一种方法。例如,如果您有一个标签为T的索引,您可以从container.get().begin()迭代至container.get().end().如果您尝试在for循环中这样做(并且没有C++0xauto),迭代器的类型是multi_index_container::index::type::iterator.现在index::type将是boost::multi_index::detail::ordered_index或结构上等效的东西。例如。它将提供

c++ - 如何使用 boost::unit_test?

我正在尝试学习如何测试程序,所以我尝试了Boost。我已经开始阅读它并且here我遇到过这一行:现在我可以编译它并链接到单元测试框架。我应该从哪里以及如何获得单元测试框架?它是什么?我只是不知道和什么一起吃。有人可以提供一些如何使用它的步骤,或者可能会指出一些其他教程,其中甚至会解释最简单的东西,如单元测试框架以及如何将其链接。谢谢 最佳答案 只是一个快速的评论。这个库的问题在于它至少有三种不同的方式来实现和运行测试。根据您在包含boost单元测试header之前添加到代码中的#defines,它可以自动为您生成一个主要功能(然后构

c++ - 将 boost::unordered_set 作为结果映射传递给 boost::split

有谁知道将boost::unordered_set作为第一个参数传递给boost::split是否合理?在libboost1.42-dev下,这似乎会导致问题。这是导致问题的一个小示例程序,将其称为test-split.cc:#include#include#include#includeintmain(intargc,char**argv){boost::unordered_settags_set;boost::split(tags_set,"a^b^c^",boost::is_any_of(std::string(1,'^')));return0;}然后,如果我运行以下命令:g++

c++ - Boost ASIO 缓冲不工作

我正在编写一个网络应用程序,它使用ASIO/UDP在单个远程/本地端点对之间发送和接收。我曾使用udp::socket::receive接收数据,我的代码中的所有内容都在逻辑上工作,但我丢失了大量数据包。我发现任何接收到的数据包在没有被接收函数阻塞的情况下都丢失了——它没有缓冲。这特别奇怪,因为我使用以下命令将接收缓冲区设置为2MB:sock_udp.connect(remote_endpoint);sock_udp.set_option(boost::asio::socket_base::receive_buffer_size(2*1024*1024));如果我只发送两个数据包,每个

c++ - 使用 Boost::Asio 停止线程服务器循环

我正在为一个更大的软件开发一个微型服务器循环,但它并没有像我希望的那样工作。当用户输入“.quit”时,我希望软件停止这个线程服务器循环:try{while(true){acceptor.accept(socket);constsize_tbuffersize=1024;chardata[buffersize+1]={0};data[socket.read_some(boost::asio::buffer(data,buffersize))]='\0';//Writedata&placeterminatorboost::threadasyncWriting(boost::bind(&m

c++ - 使用 boost.python 从 UTF-8 编码的 char* 返回 python unicode 实例

我正在尝试做一些应该非常简单的事情,但我不太幸运地从现有文档中弄清楚如何做。对于python2项目,我试图将列表gettext-translated字符串作为unicode实例返回给python。gettext()的返回值是UTF-8编码的char*,使用PyUnicode_FromString将其转换为pythonunicode实例应该非常简单。我觉得这很容易做到,但我似乎不知道怎么做。根据IgnacioVazquez-Abrams和ThomasK的评论,我确实让这个对单个字符串有效;对于这种情况,您可以绕过所有boost.python基础设施。这是一个例子:PyObject*PyM