Tag: boost asio

与boost.asio和文件I / O有什么关系?

我注意到boost.asio有很多涉及套接字,串口和各种非文件示例的例子。 对于我来说,谷歌并没有真正提到过,如果说asio是一个很好或有效的asynchronous文件I / O方法的话。 我有一些想要asynchronous写入磁盘的数据。 这可以通过在Windows(我的平台)本机重叠io来完成,但我更喜欢有一个独立于平台的解决scheme。 我很好奇 boost.asio有任何forms的文件支持 boost.asio文件支持对于日常文件I / O足够成熟 将文件的支持将被添加? 这是什么前景?

应该std :: bind与boost :: asio兼容吗?

我正在尝试使用boost :: asio示例之一来尽可能地使用c ++ 11 / TR1库。 原始代码如下所示: void start_accept() { tcp_connection::pointer new_connection = tcp_connection::create(acceptor_.get_io_service()); acceptor_.async_accept(new_connection->socket(), boost::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error)); } 如果我用std::bindreplaceboost::bind ,如下所示: void start_accept() { tcp_connection::pointer new_connection = tcp_connection::create(acceptor_.get_io_service()); acceptor_.async_accept(new_connection->socket(), std::bind(&tcp_server::handle_accept, this, new_connection, boost::asio::placeholders::error ) ); // std::bind(&tcp_server::handle_accept, this, new_connection, _1 ) ); } 我收到一个很大的错误信息,结尾是: /usr/include/c++/4.4/tr1_impl/functional:1137: error: return-statement with a value, in function returning […]

官方的“Boost library”支持Android和iOS?

这个问题是延续到我应该select在Android Android的Boost的Asio或Aysnc套接字线程? 问: Boost库旨在广泛使用,并可用于各种应用程序,但尚未提供针对Android和iOS的官方支持 有没有像embedded式设备不优化背后的任何特定原因? 或者其他原因? 任何机构是否知道在Android或iOS上使用Boost构build的任何应用程序? build议使用boost库来进行networking密集型应用程序,这种应用程序会产生multithreading通信? FYI ..我一直使用下面的链接来创build一个示例Android应用程序,但不成功:( https://github.com/MysticTreeGames/Boost-for-Android http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/ 在Android中包含Boost C ++库 如何在Android NDK和STLport中使用boost库(包括shared_ptr) https://sites.google.com/site/fourdollars/android/android-mk https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho http://www.crystax.net/trac/ndk/ticket/6 Android NDK R5和C ++exception的支持 提前致谢。

如何获得boost :: asio :: ip :: tcp :: socket的IP地址?

我正在使用Boost ASIO库在C ++中编写服务器。 我希望获得客户端IP的string表示,以显示在我的服务器日志中。 有谁知道如何做到这一点?

boost :: asio :: io_service运行方法块/解锁时混淆

作为Boost.Asio的初学者,我很困惑io_service::run() 。 我将不胜感激,如果有人可以向我解释,当这种方法阻止/解锁。 文件指出: run()函数阻塞,直到所有的工作完成,并且没有更多的处理程序被分派,或者直到io_service被停止。 多个线程可能会调用run()函数来设置一个线程池, io_service可以从中执行处理程序。 在池中等待的所有线程都是相等的, io_service可以select其中的任何一个来调用处理程序。 run()函数的正常退出意味着io_service对象被停止( stopped()函数返回true)。 除非事先调用reset()否则对run() , run_one() , poll()或poll_one()后续调用将立即返回。 以下声明是什么意思? 没有更多的处理者被派遣[…] 在试图理解io_service::run()的行为的时候,我遇到了这个例子 (例3a)。 在其中,我观察到io_service->run()阻塞并等待工作订单。 // WorkerThread invines io_service->run() void WorkerThread(boost::shared_ptr<boost::asio::io_service> io_service); void CalculateFib(size_t); boost::shared_ptr<boost::asio::io_service> io_service( new boost::asio::io_service); boost::shared_ptr<boost::asio::io_service::work> work( new boost::asio::io_service::work(*io_service)); // … boost::thread_group worker_threads; for(int x = 0; x < 2; ++x) { worker_threads.create_thread(boost::bind(&WorkerThread, io_service)); } io_service->post( […]

最好的文档Boost:asio?

boost网站上提供的文档是有限的。 从我所能读到的,一般的共识是,在boost :: asio库中很难find好的文档。 这是真的吗? 如果是这样,为什么? 笔记: 我已经find了(非增强型) Asio网站 – 文档看起来与boost网站上的文档完全相同。 我知道Boost :: asio是新的! 我正在寻找解决scheme而不是借口。 编辑: 有一个build议,将networking库添加到由Boost:asio(Christopher Kohlhoff)撰写的TR2标准库中 。 虽然它不是boost:asio的文档,但它确实将它用作TR2提议的基础。 由于作者在这份文件中join了更多的努力,我发现它有一定的帮助,如果不是作为参考的话,至less作为一个概述。

libuv与Boost / ASIO相比如何?

我会对如下方面感兴趣: 范围/function 性能 到期

基于Boost.ASIO的HTTP客户端库(如libcurl)

我正在寻找一个现代的C ++ HTTP库,因为libcurl的缺点很难被C ++包装所解决。 基于已经成为事实上的C ++ TCP库的Boost.ASIO的解决scheme是首选。

为什么我们需要使用boost :: asio :: io_service :: work?

有一个使用boost :: asio的例子。 为什么这个例子使用boost :: asio :: io_service :: work? 为什么是srv.run (); 没有调用在线程中执行任务? int main() { boost::asio::io_service srv; boost::asio::io_service::work work(srv); boost::thread_group thr_grp; thr_grp.create_thread(boost::bind(&boost::asio::io_service::run, &srv)); thr_grp.create_thread(boost::bind(&boost::asio::io_service::run, &srv)); srv.post(boost::bind(f1, 123)); srv.post(boost::bind(f1, 321)); //sync srv.post(boost::bind(f2, 456)); srv.post(boost::bind(f2, 654)); //sync srv.stop(); thr_grp.join(); } 更新:当没有io_service :: work使用io_service时,轮询和运行有什么区别? int main() { boost::asio::io_service srv; //boost::asio::io_service::work work(srv); std::vector<boost::thread> thr_grp; srv.post(boost::bind(f1, 123)); srv.post(boost::bind(f1, 321)); […]

线程池使用boost asio

我正在尝试使用boost :: asio创build一个有限的线程池类。 但是我被卡住了,有一个人可以帮助我。 唯一的问题是我应该减less的地方呢? 代码不能按预期方式工作。 问题是我不知道什么时候我的线程将完成执行,我将如何知道它已经返回到池中 #include <boost/asio.hpp> #include <iostream> #include <boost/thread/thread.hpp> #include <boost/bind.hpp> #include <boost/thread/mutex.hpp> #include <stack> using namespace std; using namespace boost; class ThreadPool { static int count; int NoOfThread; thread_group grp; mutex mutex_; asio::io_service io_service; int counter; stack<thread*> thStk ; public: ThreadPool(int num) { NoOfThread = num; counter = 0; mutex::scoped_lock […]