标签: boost-asio

`enable_shared_from_this`的用处是什么?

我在enable_shared_from_this阅读Boost.Asio示例时跑了过来,在阅读完文档之后,我仍然因为如何正确使用它而迷失了方向.有人可以给我一个例子和/或说明何时使用这个课程是有道理的.

c++ boost tr1 boost-asio

332
推荐指数
4
解决办法
8万
查看次数

libuv与Boost/ASIO相比如何?

我会对以下方面感兴趣:

  • 范围/功能
  • 性能
  • 到期

c++ boost boost-asio libuv

221
推荐指数
3
解决办法
5万
查看次数

Boost的最佳文档:asio?

boost网站上提供的文档是有限的.

从我能够阅读的内容来看,普遍的共识是很难在boost :: asio库上找到好的文档.

这是真的吗?如果是这样,为什么?

笔记:

  • 我已经找到了(非增强型)Asio网站 - 文档看起来与boost网站上的相同.
  • 我知道Boost :: asio是新的!我正在寻找解决方案而不是借口.

编辑:

  • 有人建议将网络库添加到由Boost:asio(Christopher Kohlhoff)的作者编写的TR2标准库中.虽然它不是boost:asio的文档,但它确实将它作为TR2提案的基础.由于作者在本文档中付出了更多努力,我发现它有点帮助,如果不是作为参考,那么至少作为概述.

c++ boost boost-asio

139
推荐指数
7
解决办法
6万
查看次数

当boost :: asio :: io_service运行方法阻塞/解除阻塞时会感到困惑

作为Boost.Asio的初学者,我很困惑io_service::run().如果有人能在这个方法阻止/解除阻止时向我解释,我将不胜感激.文件指出:

run()函数将阻塞,直到所有工作完成,并且不再需要调度处理程序,或者直到io_service停止处理.

多个线程可以调用该run()函数来设置一个线程池,io_service可以从中执行处理程序.在池中等待的所有线程都是等效的,并且io_service可以选择其中任何一个来调用处理程序.

run()函数的正常退出意味着io_service对象已停止(stopped()函数返回true).后续调用run(),run_one(),poll()poll_one()将除非有预先调用立即返回reset().

以下陈述是什么意思?

[...]不再派遣处理人员[...]


在试图理解行为时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::bind(CalculateFib, 3));
io_service->post( boost::bind(CalculateFib, 4));
io_service->post( …
Run Code Online (Sandbox Code Playgroud)

c++ boost-asio

82
推荐指数
2
解决办法
4万
查看次数

绑定多播(UDP)套接字是什么意思?

我在具有多个网络接口的主机之间使用多播UDP.我正在使用boost :: asio,并且被接收器必须进行的2个操作混淆:bind,然后是join-group.

当您对加入的每个组播组执行此操作时,为什么需要在绑定期间指定接口的本地地址?

姐妹问题是关于多播端口:因为在发送期间,您发送到多播地址和端口,为什么在订阅多播组期间,您只需指定地址,而不是端口 - 在混乱的呼叫中指定的端口绑定.

注意:"join-group"是一个包装器setsockopt(IP_ADD_MEMBERSHIP),如文档所示,可以在同一个套接字上多次调用以订阅不同的组(通过不同的网络?).因此,每次订阅组时,抛弃绑定调用并指定端口是完全合理的.

从我所看到的,总是绑定到"0.0.0.0"并在加入组时指定接口地址,效果非常好.困惑.

sockets udp bind multicast boost-asio

65
推荐指数
4
解决办法
10万
查看次数

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

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

c++ curl http boost-asio

60
推荐指数
4
解决办法
5万
查看次数

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

我正在使用Boost ASIO库在C++中编写服务器.我想得到客户端IP的字符串表示形式,以显示在我的服务器日志中.有谁知道怎么做?

c++ networking boost boost-asio

56
推荐指数
2
解决办法
3万
查看次数

官方"Boost库"支持Android和iOS?

这个问题是继续我应该在Android中选择Boost Asio或Aysnc Socket线程吗?问:

Boost库旨在广泛使用,并可在各种应用程序中使用,但Android和iOS尚无官方支持

  1. 是否有任何特定原因,例如未针对嵌入式设备进行优化?还是其他任何原因?
  2. 有没有人知道在Android或iOS上使用Boost构建的任何应用程序?
  3. 是否建议将升级库用于网络密集型应用程序,从而产生多线程进行通信?

仅供参考.我一直在使用以下链接创建示例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++库

如何将boost库(包括shared_ptr)与Android NDK和STLport一起使用

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++异常

提前致谢.

android boost boost-asio android-ndk ios

51
推荐指数
4
解决办法
3万
查看次数

如何在C++中使用boost创建线程池?

如何使用C++中的boost创建线程池,如何将任务分配给线程池?

c++ boost boost-thread boost-asio threadpool

51
推荐指数
3
解决办法
6万
查看次数

与boost.asio和文件i/o有什么关系?

我注意到boost.asio有很多涉及套接字,串行端口和各种非文件示例的例子.对于我来说,Google并没有真正提到过很多,因为asio是一个很好或有效的异步文件i/o方法.

我有大量的数据我想异步写入磁盘.这可以通过Windows(我的平台)中的原生重叠io来完成,但我更喜欢拥有独立于平台的解决方案.

我好奇,如果

  1. boost.asio有任何文件支持
  2. boost.asio文件支持已经足够成熟,适用于日常文件i/o
  3. 是否会添加文件支持?这是什么前景?

c++ file-io boost boost-asio

45
推荐指数
5
解决办法
2万
查看次数