Boost:asio的最佳文档?


141

boost网站上提供的文档有限。

根据我的理解,普遍的共识是,很难在boost :: asio库中找到好的文档。

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

笔记:

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

编辑:

  • 有人建议将 Boost.asio(Christopher Kohlhoff)的作者编写的网络库添加到TR2的标准库中。虽然它不是boost:asio的文档,但确实将其用作TR2提案的基础。由于作者在本文档中投入了更多精力,因此我发现它在某种程度上有所帮助,即使不作为参考,也至少作为概述。

Answers:


54

首先,我已经使用Boost.Asio已有相当长的时间了-我也分享您的关注。要解决您的问题:

  • 除了介绍和教程之外,关于Boost.Asio确实很少有文档。我不是作者,但这主要是因为对于像异步IO库这样的低级内容来说,有太多东西要记录。
  • 这些示例比教程提供的更多。如果您不介意花一些时间查看不同的示例,那么我认为它们应该足以帮助您入门。如果您想逃避它,那么参考文档应该对您有很大帮助。
  • 在Boost Users和Boost Developers邮件列表中四处询问,如果您确实遇到困难或正在寻找具体指导。我敢肯定,很多人会愿意在邮件列表上解决您的问题。

有一些努力(不是Boost.Asio的一部分)公开许多功能和可能的替代用例。这充其量是分散在网络上的博客和其他形式的非打包文档中。

目前尚不清楚的一件事是,实际上需要与Boost.Asio库的作者和开发人员密切协作,以针对特定平台扩展和自定义它或添加特定的新功能。尽管应该对此进行改进,但好处是,将来Asio似乎将成为标准库技术报告(用于STL中的异步IO库)的参考实现。


2
感谢您确认怀疑。不幸的是,我尝试从示例中学习,但效果不错,但效果有限。不幸的是,我无法证明使用包含少量示例作为一组指令的库是合理的。我可能会听取您关于ML的建议,但我们迫切希望得到更好的支持!
2008年

我只是把两个加在一起。我在谷歌搜索boost asio时发现的热门Google热门歌曲之一(也是最有用的文章)在您的博客上:)
mmocny,

是的,但是我还不想公开地说出来。;)Chis Kholhoff(作者)也有一个博客,他在其中谈论了很多有关Asio的知识,以及如何在不太常见的情况下使用Asio。
迪恩·迈克尔

@mmocny我同意,但是ASIO的实现质量比大多数其他免费事件库要好,尤其是在Windows下。
unixman83 '02

63

可以在http://en.highscore.de/cpp/boost/index.html上的(免费)boost手册中找到一些有关boost的不错的文档,包括有关asio的章节。有关asio的章节提供了一般概述,然后深入探讨了如何开发自己的自定义asio扩展。BorisSchäling做出了巨大的努力!


41

我写了两篇小文章,可以用作boost.asio的介绍。它们可以从我的网站上获得


4
在研究是否要为当前项目使用asio或ace时,我独立找到了Alex Ott的网站。他的网站回答了我的许多问题。
deft_code

翻录此人的网站。这就是为什么您在此处发布答案而不是链接到无效网站的原因,直到时间结束。
maxywb

30

注意:我已经联系gamedev.net,让他们知道格式化问题。不幸的是,在撰写此评论时,由于其网站上的某些更改会隐藏/删除#include语句+缺少的.zip文件资源,因此更难以推荐此资源。

可以在此处找到关于Boost.Asio的相对较新且非常好的入门教程(该教程还介绍了如何有效地将其与bind,shared_ptr和线程一起使用):

http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio?pg=1

注意:如果您使用的是c ++ 0x功能,则可以使用lambda替换许多用于创建仿函数的bind的简单用法,并且在最新版本的Visual Studio(或gcc中也包含线程)中也可以使用shared_ptr / bind )

当我搜索文档或教程时,这个问题一直出现在搜索结果的顶部,因此,随着新教程的到来,使其保持更新很重要。


很棒的链接!绝对是入门的好指南
Ralf

1
感谢您发布此链接。不幸的是,我觉得当它开始变得好起来时,作者丢下了球,直接将您倾倒在他/她创建的图书馆中,并彻底迷失了我。他/她从详细地解释了如何bind工作到让读者猜测Hive他们的图书馆里有什么。
Rotsiser Mho 2012年

他们在本教程中直接提供了蜂巢防御+界面。我认为这是有用的,是有道理的,因为他们介绍它的11。10页
M2tM

本文提到了一个带有示例的zip文件,但我看不到。另外,#includes是从示例代码中删除的吗?
杰克·加斯顿

嗯,不幸的是,似乎在一段时间内,随着对gamedev.net渲染代码的更新而侵蚀了这篇文章,该渲染代码似乎根本无法很好地处理尖括号,我目前无法保证这个答案的有效性。虽然它可能仍然是一个不错的参考,但其格式显然尚未正确迁移。@JakeGaston
M2tM


8

asio文档是boost中可用的文档,虽然极简,但非常精确,每个单词都很重要。也就是说,我主要从SO学习了asio(并且继续学习)。

在我看来,第一步的答案是“ boost :: asio :: io_service运行方法阻塞/取消阻塞时感到困惑 ”,第一步,再读一遍,直到您真正理解它为止,第二个答案也很有帮助。

然后,我已RSS订阅了最新的SO boost-asio标签问题以及这两个答复者:

以上答案的作者Tanner Sansburry,他的答案总是非常精确,全面,带有参考,甚至是精美的图解RSS feed
Sehe(对不起,Sehe,仅第2位)。RSS订阅

有了所有这些材料,您很快就会成为asio专家!




0

聚会晚了一点,但是有一本书叫做“ Boost Asio Network Programming”(打包出版)。

我买了一个副本,在周末阅读,然后用C ++在服务器上写了一个完整的书,没有太大问题。

免责声明:我与这本书无关


哎呀 我从Packt那里选了3本关于Asio的书,但还没有发现它们值得信赖。就我所能识别的程度而言,当人们从他们复制到SO问题中的代码气味中阅读错误的书时,请参阅例如stackoverflow.com/a/48084444/85371stackoverflow.com/a/47698904/85371
sehe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.