Boost.Asio c++ 网络编程翻译

Posted 程序员超时空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Boost.Asio c++ 网络编程翻译相关的知识,希望对你有一定的参考价值。

前言

网络编程由来已久,并且是一个极富挑战性的任务。Boost.Asio对网络编程做了一个极好的抽象,从而保证你用少量的编程就可以创造出一个优雅的client-server软件,并在创造的过程中,它能让你体会到极大的乐趣。而更为有益的是,Boost.Asio包含了一些非网络的特性,用Boost.Asio写出来的代码紧凑、易读,而且如果你按照我在书中所讲的来做,你的代码会无懈可击。

这本书涵盖了什么?

第一章:Boost.Asio入门 将告诉你Boost.Asio是什么? 怎么编译它? 顺带着会有 一些例子。你 会发现 Boost.Asio不仅仅是一个网络库。同时你也会接触到Boost.Asio中最核心的类 io_service。

第二章:Boost.Asio基本原理 包含了你必须 了解的内容:什么时候用Boost.Asio? 我们将深入了解异步编程—— 一种比同步更需要技巧, 且更有乐趣的编程方式。同时, 当 在你 开发 你自己的网络应用时,你需要回过头,把 这一章里面的内容 作为 参考 。

第三章:回显服务端/客户端将会告诉你如何实现一个小的client-server应用;也许,这会是你写过的最简单的client-server应用。回显应用就是一个把客户端发过来的任何消息回显回去然后关闭客户端连接的服务。我们会先实现一个同步的应用,然后再实现一个异步的应用,这样你就可以非常容易地看到它们之间的不同。

第四章:客户端和服务端会深入讨论如何用Boost.Asio创建一个简单的客户端服务端应用。我们将讨论如何避免诸如内存泄漏和死锁的缺陷。所有的程序都是简单的框架,从而使你更方便的对他们进行扩展并满足你的需求。

第五章:同步VS异步会带你了解那些当你选择同步还是异步方式时需要考虑的事情。首先就是避免混淆它们。在这一章,我们将会看到每一个类型应用的实现、测试和调试是多么的容易。

第六章:Boost.Asio的其他特性将带你了解一些Boost.Asio一些不为人知的特性。你会发现,虽然std streams和streambufs有一点点难用,但是却表现出了它们独天得厚的优势。最后,你会发现Boost.Asio后期的一个条目——协程,它可以让你用一种更易读的方式来写异步代码。(就好像它是同步的一样)

第七章:Boost.Asio进阶会处理一些Boost.Asio的高端问题。虽然你不需要在日常编程中深入研究它们,但是了解它们对你有益无害(Boost.Asio高级调试,SSL,Windows特性,POSIX特性等)。

读这本书你需要准备什么?

为了编译Boosta.Asio以及运行本书中的例子,你需要一个现代编译器。例如,Visual Studio 2008及其以上版本或者g++ 4.4及其以上版本

这本书是为谁准备的?

这本书对于那些需要进行网络编程却不想深入研究复杂的原始网络API的开发者来说是一个福音。所有你需要的只是Boost.Asio提供的一个简单抽象。作为著名的Boost C++库的一部分,你只需要额外添加几个#include文件即可转换到Boost.Asio。

在读这本书之前,你需要熟悉Boost核心库的一些知识,例如Boost智能指针、boost::noncopyable、BoostFunctors、BoostBind、shared_

from_this/enabled_shared_from_this和Boost线程(线程和互斥量)。同时还需要了解Boost的Date/Time。读者还需要知道阻塞的概念以及“非阻塞”操作。

约定

你会发现本书中用不同样式的文字来区分不同种类的信息。这里给出这些样式的例子以及它们的解释。

文本中的代码会这样显示:“通常一个 io_service的例子就足够了”。

一段代码是下面这个样子的:

read(stream, buffer [, extra options])
async_read(stream, buffer [, extra options], handler)
write(stream, buffer [, extra options])

async_write(stream, buffer [, extra options], handler)

专业词汇和重要的单词用黑体显示

[!警告或者重要的注释在这样的一个框里面]

[?技巧在这样的一个框里面]

读者反馈

我们欢迎来自读者的反馈。告诉我们你对这本书的看法——你喜欢哪部分,不喜欢哪部分。读者的反馈对我们非常重要,它能让我们写出对读者帮助最大的书籍。

你只需要发送一封邮件到feedback@packtpub.com即可进行一般的反馈,注意在邮件的主题中注明书名。

如果你有一个擅长的专题,想撰写一本书或者为某本书做贡献。请阅读我们在www.packtpub.com/authors上的作者指引。

用户支持

现在你已经是Packet书籍的拥有者,我们将告诉你一些事项,让你享受到购买本书的最大收益。

下载示例代码

你可以在http://www.packtpub.com登录你的帐号,然后下载你所购买的书籍的全部示例代码。同时,你也可以通过访问http://www.packtpub.com/support进行注册,然后这些示例代码文件将直接发送到你的邮箱。

纠错

尽管我们已经尽我们最大的努力去保证书中内容的准确性,但是错误始终是存在的。如果你在我们的书籍中发现了错误——也许是文字,也许是代码——如果你能将它们报告给我们,我们将不胜感激。这样的话,你不仅能让帮助其他读者避免一些疑惑,同时也能帮助我们改进这本书的下一个版本。如果你发现任何需要纠正的地方,访问http://www.packtpub.com/submit-errata,选择你的书籍,点击erratasubmission form链接,然后输入详细的纠错信息来将错误报告给我们。一经确定,你的提交就会通过并且纠错会上传到我们的网站,或者添加到那本书的纠错信息区域的纠错列表中。所有存在的纠错都可以访问http://www.packtpub.com/support,然后通过选择书名的方式来查看。

盗版

在互联网上通过各种媒体盗版版权材料是个一直存在的问题。在Packet,版权和许可的保护非常严格。如果你在互联网上发现任何形式的关于我们作品的非法备份。请及时把链接或者网址反馈给我们以便我们采取补救措施。

请将可疑盗版材料的链接通过copyright@packtpub.com发送给我们。

对于你帮助我们保护我们的作者以及我们提供有价值内容能力的行为我们将不胜感激。

答疑

如果你有关于本书任何方面的问题,你可以通过questions@packtpub.com联系我们。我们将尽我们最大的努力进行解答

以上是关于Boost.Asio c++ 网络编程翻译的主要内容,如果未能解决你的问题,请参考以下文章

boost::asio基本使用

C++——boost:asio的使用

boost::asio::ip::tcp实现网络通信的小例子

c++ - Boost ASIO 网络服务器/客户端

C++ 网络程序设计:Boost Asio、序列化和 OStream

C++ Boost ASIO:如何读取/写入超时?