Articles of 升压

C ++ Boost ASIO简单周期性定时器?

我想要一个非常简单的周期性定时器,每50ms调用一次我的代码。 我可以创build一个睡眠时间为50ms的线程(但是这很痛苦)…我可以开始研究Linux API来制作计时器(但它不是可移植的)… 我想使用提升..我只是不知道这是可能的。 增强提供这个function吗?

Linux上的boost和ssl客户端服务器构build问题

当我安装pcl(点云库)时,我已经安装了boost作为第三个库。 现在我试图运行客户端和服务器程序http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/example/cpp03/ssl/client.cpp 当试图链接所需的库时: g++ -I /usr/include/boost/ server.cpp -o server -lboost_system -lssl -lpthread 出现以下错误: / usr / bin / ld:/tmp/ccRbD849.o:未定义引用符号'ERR_reason_error_string @@ OPENSSL_1.0.0'//lib/x86_64-linux-gnu/libcrypto.so.1.0.0:添加符号错误:DSO缺失从命令行collect2:错误:ld返回1退出状态 当我searchusr文件夹时,Boost文件夹只存在于子文件夹内。 我能做些什么来解决这个问题。

加强静态链接

我正在使用Linux中的Boost库,GCC。 在安装和构buildBoost之后,我发现使用Regex和Thread的程序使用共享的Boost库。 为了我的目的,我需要静态链接。 我怎样才能改变链接types? 我应该重buildBoost,还是我可以通过在自己的项目中定义一些常量或Boostconfiguration文件来设置链接types?

如何在Windows中使用boost asioasynchronous读取命令行input?

我发现这个问题 ,询问如何asynchronous读取input,但只能使用POSIXstream描述符,这将不会在Windows上工作。 所以,我发现这个教程显示,而不是使用POSIXstream描述符,我可以使用boost::asio::windows::stream_handle 。 在这两个例子之后,我提出了下面的代码。 当我运行它时,我不能在命令提示符下键入任何内容,因为程序立即终止。 我希望它捕获来自用户的任何input,可能是一个std::string ,同时允许我的程序中的其他逻辑执行(即从Windows控制台执行asynchronousI / O)。 从本质上讲,我试图避免阻止我的程序,当它试图从stdin读取。 我不知道这是否可能在Windows中,因为我也发现这个post ,详细说明另一个用户在尝试做同样的事情时遇到的问题。 #define _WIN32_WINNT 0x0501 #define INPUT_BUFFER_LENGTH 512 #include <cstdio> #include <iostream> #define BOOST_THREAD_USE_LIB // For MinGW 4.5 – (https://svn.boost.org/trac/boost/ticket/4878) #include <boost/bind.hpp> #include <boost/asio.hpp> class Example { public: Example( boost::asio::io_service& io_service) : input_buffer( INPUT_BUFFER_LENGTH), input_handle( io_service) { // Read a line of input. boost::asio::async_read_until( […]

SO_RCVTIME和SO_RCVTIMEO不影响Boost.Asio操作

以下是我的代码 boost::asio::io_service io; boost::asio::ip::tcp::acceptor::reuse_address option(true); boost::asio::ip::tcp::acceptor accept(io); boost::asio::ip::tcp::resolver resolver(io); boost::asio::ip::tcp::resolver::query query("0.0.0.0", "8080"); boost::asio::ip::tcp::endpoint endpoint = *resolver.resolve(query); accept.open(endpoint.protocol()); accept.set_option(option); accept.bind(endpoint); accept.listen(30); boost::asio::ip::tcp::socket ps(io); accept.accept(ps); struct timeval tv; tv.tv_sec = 1; tv.tv_usec = 0; //setsockopt(ps.native(), SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv)); setsockopt(ps.native(), SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); char buf[1024]; ps.async_receive(boost::asio::buffer(buf, 1024), boost::bind(fun)); io.run(); 当我使用Telnet连接但不发送数据时,它不会从Telnet超时断开连接。将需要做什么使setsockopt踢? 谢谢! 我已经将SO_RCVTIMEO修改为SO_SNDTIMEO。 仍然无法在指定的时间超时