Boost.Asio C++ 网络编程 中文版

4星(超过85%的资源)
所需积分/C币:33 2015-11-16 16:36:39 1.33MB PDF
41
收藏 收藏
举报

Boost.Asio C++ 网络编程 PDF 高清 非扫描 中文版
Boost. asio c+网络编程 实战出精华 在具体的C++网络编程中提升你的逼格 John Toro Boost, Asio c+网络编程 Copyright o 2013 Packt Publishing 关于作者 做为权威的C++专家,除了偶尔用C#和Java写程序, John Tojo把他超过15年编程生涯中的大部分时间都 贡献给了C+。 他也很喜欢在C++ Users journa和其他杂志上写一些编程相关的文章。 闲暇的时候,他喜欢玩扑克、开快车。他有很多个自由职业,其中一个就把他的两个爱好结合在一起, 个是玩扑克,另外一个是编程。如果你想联系他,可以发邮件到johncode@taro.com 我要感谢我的朋友 Alexandru chis, Aurelian hale, Bela tibor bartha, Cristian fatu, Horia uifaleanu, Nicolae ghimbovschi以及 Ovidiu deac。感谢他们对本书提出的反馈和意见。同时我也要感谢Pack公司各 位对我频繁错过截稿日期行为的包容。然后最需要感谢的是 Chris Kohlhoff, Boostasio的作者,是他写出 了如此伟大的库。 把这本书献给我最好的朋友 Darius 关于评审员 Bela tibor bartha 一个使用过多种技术和语言进行开发的专业软件工程师。尽管在过去的4年里,他做的是OS和OSX应用开 发,但是C++陪伴他度过了早期个人游戏项目开发的激情岁月。 我要感谢John,因为他我扌能做这本书的评审 Nicolae ghimboyschi 一个参加各类C++项目超过5年的天扌个人开发者。他主要参与一些企业通信工程的项目。作为一个狂热的 LinuⅨ爱好者,他喜欢利用不同的操作系统、脚本工具和編程语詈进行测试和实验。除了编程,他还喜欢骑 自行车、瑜伽和冥想。 开始 Boost. asio c+网络编程 我要感谢John让我来评审这本书 关于译者 井主流程序猿 mmoaay,技术很烂,喜欢平面设计、鼠绘、交友、运动和翻译,但是确作为一只程序猿混 迹在冮行业。热爱开源,技术烂就只好做做设计和翻译的工作。 微博:htto:/ weibo. com/smmoaay 关于 avplayer http://avplayer.org中国第一技术社区。 目录 前言 第一章: Boost asio入门 什么是 Boost.Asi0? 历史 依赖 编译 Boost.Asi0 重要的宏 同步VS异步 异常VS锴误代码 Boost.Asio中的多线程 不仅仅是网络 计时器 10 servce类 总结 第二章: Boost. asio基本原理 网络AP工 Boost.Asi0命名空间 IP地址 端点 Sockets 同步错误代码 Socket成员函数 其他注意事项 开始 Boost. asio c+网络编程 read/ write/ connect自由函数 connect凼数 read/ write函数 异步编程 为什么要异步? 异步run(),run_one(),po11(),pol1_one() 持续运行 run_one(),p011(),po1lone()函数 异步工作 异步post() vs dispatch() Vs wrap() 保持运行 总结 第三章:回显服务端喀客户端 TCP回显服务端/客户端 TCP同步客户端 TCP同步服务端 TcP异步客户端 TCP同步服务端 代码 UDP回显服务端/客户端 UDP同步回显客户端 UDP同步回显服务端 总结 第四章:客户端和服务端 同步客户端/服务端 同步客户端 同步服务端 异步客户端/服务端 异步客户端 异步服务端 总结 第五章:同步VS异步 同步异步混合编程 客户端和服务端之司消息的互相传递 客户端软件中的同步I/0 服务端软件中的同步I/o 同步服务端中的线程 客户端软件中的异步I/0 服务端软件中的异步I/0 异步服务端中的线程 异步操作 代理实现 总结 开始 Boost. asio c+网络编程 第六章: Boost.asio-其他特性 std streamsFhstd buffer I/o Boost.Asio和STL流 streambuf类 处理 streambuf对象的自由函数 协程 总结 第七章: Boost asio-进阶 Asio s Boost. AslO 调试 处理程序跟踪信息 例子 处理程序跟踪文件 SSL Boost.Asio的 Windows特性 流处理 随机存储处理 对象处理 Boost.Asio的 POSIX特性 本地 sockets 连接本地 sockets POSIX文件描述符 Fork 总结 索引 前言 网络编程由来已久,并且是一个极富挑战性的任务。 Boost asio对网终编程做了一个极好的抽象,从而保证 只需要少量的编程就可以实现一个优雅的客户端服务端软件。在实现的过程中,它能让你体会到极大的乐 趣。而且更为有益的是: Boost. asio包含了一些非网络的特性,用 Boost.asio写出来的代码紧凑、易渎,而 且如果你按照我在书中所讲的来做,你的代码会无懈可击。 这本书涵盖了什么? 第一章:BσσstAs人门捋告诉你 Boost asic是什厶?怎么编译它?顺带着会有一些例子。你会发现 Boost.asio不仅仅是一个网络店。同时你也会接触到 Boost. Asio中最核心的类 lo service 第二章:Bσ ostAsio基本原理包含了你必须了解的内容:什么时候用 Boost asio?我们捋深入了解异步编程 种比同步更需要技巧,且更有乐趣的编程方式。这一章也是在开发你自己的网络应用时可以作为参 考的一章。 开始 Boost. asio c+网络编程 第三章:回显服务端傛户端捋会告诉你如何实现一个小的客户端/服务端应用;也许这会是你写过的最简单 的客户端服务端应用。回显应用就是把客户端发过来的消息发送回去然后关闭客户端连接的服务。我们会 先实现一个同步的版本,然后再实现一个异步的版本,这样就可以非常容易地看到它们之间的不同。 第四章:客户端和服务端会深入讨论如何用Bσ ost. asio创建一个简单的客户端/服务端应用。我们烀讨论如 何避免诸如内存泄漏和死锁的缺陷。所有的程序都只是实现一个简单的框架,从而使你能更方便地对它们 进行扩展以满足你的需求。 第五章:同步VS异步会带你了解在同步和异步方式之间做选柽时需要考虑的事情。首要的事情就是不要混 淆它们。在这一章,我们会发现实现、测试和调试每个类型应用是非常容易的 第六章: Boostasio的其他特性捋带你了解 Boost asic-些不为人知的特性。你会发现,虽然 std streams和 streambufs有一点点难用,但是却表现出了它们得天独厚的优势。最后,是姗姗来迟的 Boost. asio协程,它 可以让你用一种更易读的方式来写异步代码。(就好像写同步代码一样) 第七章: Boostasio进阶包含了一些 Boost.asio进阶问题的处理。虽然在日常编程中不需要深入研究它们, 但是了解它们对你有益无害( Boost. Asio高级调试,SSL, Windows特性,POSⅨ特性等) 读这本书你需要准备什么? 如果要编译 Boost. Asio以及运行本书中的例子,你需要一个现代编译器。例如,Ⅵ isual studio2008及其以 上版本或者g++4.4及其以上版本 这本书是为谁准备的? 这本书对于那些需要选行网络编程却不想深研究复杂的原始冽络API的开发者来说是一个福音。所有你需 要的只是 Boost.asio提供的一套APl。作为著名 Boost c++库的一部分,你只需要额外添加几个 nclude文 件即可转换到 Boostasio 在读这本书之前,你需要熟悉Bσost核心库的一些知识,例如Bσost智能指针、 boost; noncopyable、 Boost Functors、 Boost bind、 shared from this/ enabled shared from this和 Boost线程(线程和互斥量)。同 时还需要了解 Boost的Date/「me。读者还需要知道阻塞的概念以及“非阻塞”操作。 约定 本书使用不同样式的文字来区分不同种类的信息。这里给出这些样式的例子以及它们的解释。 文本中的代码会这样显示:“通常一个 o sence的例子就足够了”。 段代码是下面这个样子的 read(stream, buffer extra options]) async_read(stream, buffer[ extra options, handler) write(stream buffer [ extra options]) async_write(stream, buffer [ extra options], handler) 开始 Boost. asio c+网络编程 专业词汇和重要的单词用黑体显示 [!警告或者重要的注释在这样的一个框里面 [?技巧在这样的一个框里面 读者反馈 我们欢迎来自读者的反馈。告诉我们你对这本书的看法——你喜欢哪部分,不喜欢哪部分。读者的反馈对 我们非常重要,它能让我们写出对读者帮助更大的书。 你只需要发送一封邮件到feedback@packtpub.com即可进行反馈,注意在邮件的主题中注明书名。 如果你有一个擅长的专题,想撰写一本书或者为某本书做贡献。请阅读我们在www.packtpub.com/authors 上的作者指引。 用户支持 现在你已经是Pack书籍的拥有者,我们将告诉你一些事项,让你购买本书得到的收益最大化。 下载示例代码 你可以在hp/vww.packtpub.com登录你的帐号,然后下裁你所购买的书籍的全部示例代码。同时,你也 可以通过访问htp:/www.packtpub.com/support进行注册,然后这些示例代码文件捋直接发送到你的邮箱 纠错 尽管我们已经尽最大的努力去保证书中内容的准确性,但是错误还是不可避免的。如果你在我们的书籍中 发现了错误——也许是文字,也许是代码——如果你能烀它们报告给我们,我们捋不胜感激。这样的话, 你不仅能帮助其他读者,同时也能帮助我们改进这本书的下一个版本。如果你发现任何需要纠正的地方, 访冋htt:∧w; packtpub. com/submit- errata,选择你的书籍,点击 errata submission form链接,然后输 廴详鈿的纠错信息来捋错误报告给我们。一经确定,你的提交就会通过,然后这个纠错就会被上传到我们 的网站,或者添加到那本书的纠错信息区域的纠错列表中。所有已发现的纠错都可以访问 http://www.packtpub.com/support,然后通过选择书名的方式来查看。 答疑 如果你有关于本书任何方面的问题,你可以通过questions@packtpub.com联系我们。我们将尽我们最大的 努力进行解答 开始 8 Boost. asio c+网络编程 Boost. Asio入门 首先,让我们先来了解一下什么是 Boost. asio?怎么编译它?了解的过程中我们会给出一些例子。然后在发 现 Boost asic不仅仅是一个网络库的同时你也会接触到 Boost asio中最核心的类— 1o service 什么是 Boost Asio 简单来说, Boost asi是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。 计算机网络的设计方式有很多种,但是 Boost asio的的方式远远优于其它的设计方式。它在2005年就被包 含进Boost,然后被大量Boost的用户测试并在很多项目中使用,比如Remobo(htp/www.remobo.com), 可以让你创建你自己的即时私有网络(PN)的应用, libtorrent(htt: rasterbar. com/products/libtorrent) 个实现了比特流客户端的库,PokerTh(htp:/www.pokerth.ne)一个支持LAN和互联网对战的纸牌游戏。 Boostasic在网络通信、COM串行端口和文件上成功地抽象了输人输出的概念。你可以基于这些进行同步 或者异步的输入输出编程。 read (stream, buffer extra options] async_read (stream, buffer l extra options], handler) write(stream, buffer L extra options) async_write(stream, buffer[, extra options, handler) 从前面的代码片段可以看出,这些函数支持传入包含任意内容(不仅仅是一个 socket,我们可以对它进行 读写)的流实例。 作为一个跨平台的库, Boost asio可以在大多数操作系统上使用。能同时支持数千个并发的连接。其网络部 分的灵感来源于伯克利软件分发( BSD)socket,它提供了一套可以支持传输控制协议(TCP) socket.、用户数 据报协议(UDP) socket和 nternet控制消息协议(McP) socket的AP|,而且如果有需要,你可以对其进行扩 展以支持你自己的协议。 历史 Boost. asio在2003被开发出来,然后于2005年的12月引人到B0ost135版本中。原作者是 Christopher M Kohlhoff,你可以通过chis@kohlhoft.com联系他 这个库在以下的平台和编译器上测试通过 ●32bt和64- bit windows,使用ⅥsuaC++7.,1及以上 ● Windows下使用 MinGw Windows下使用 Cygwin(确保已经定义_USE232 SOCKETS) ·基于24和26内核的 Linux,使用g++3.3及以上 Solaris下使用g+33及以上 · MAC OS×10.4以上下使用g+33及以上 它也可能能在诸如AX53,HPUX11l3, QNX Neutrino6.3, Solaris下使用 Sun studio11以上,True64 v51,Windows下使用Borlandc++592以上等平台上使用。(更多细节请咨询www.boost.org) 第一章 Boost. asio人门 Boost. asio c+网络编程 依赖 Boost. Asio依赖于如下的店: · Boost System:这个库为 Boost,库提供操作系统支持 (http://www.boost.org/doc/libs/1510/doc/html/boostsystem/index.html Boost Regex:使用这个库(可选的)以便你重线 read un0或者 async_ read_unti0时使 用 boost: regex参数。 Boost Datetime:使用这个库(可选的)以便你使用 Boost.asio中的计时器 · OpenSSL:使用这个库(可选的)以便你使用 Boost Asio提供的SSL支持。 编译 Boost.asio Boost.asio是一个只需要引人头文件就可以使用的库。然而,考虑到你的编译器和程序的大小,你可以选择 用源文件的方式来编译 Boost. asio。如果你想要这么做以减少编译时间,有如下几种方式 在某个源文件中,添加 include" oost/asio/mp/ srchpp”(如果你在使用sSL,添加# include boost/asio/ ssl/imp/src.hpp")在所有的源文件中,添加# define BOOST ASIO SEPARATE COMPILAT/ON 注意 Boost. asio依赖于 Boost System,必要的时候还依赖于 Boost Regex,所以你需要用如下的指合先编译 Boost bjam -with-system-with-regex stage 如果你还想同时编译 tests,你需要使用如下的指合: bjam-with-system-with-thread-with-date time -with-regex-with-serialization stage 这个库有大量的例子,你可以连同本书中的例子一块看看。 重要的宏 如果设置了 BOOST ASIO DISABLE THREADS;不管你是否在编译 Boost的过程中使用了线程支持, Boost. asio中的线程支持都会失效。 同步VS异步 首先,异步编程和同步编程是非常不同的。在同步编程中,所有的操作都是顺序执行的,比如从 socket中 读取(请求),然后写廴(回应)到 socket中。每一个操作都是阻塞的。因为操作是阻塞的,所以为了不 影响主程序,当在 socket上读写时,通常会创建一个或多个线程来理 socket的输入/输出。因此,同步的 服务端傛客户端通常是多线程的。 相反的,异步编程是事件驱动的。虽然启动了一个操作,但是你不知道它何时会结束;它只是提供一个回 调给你,当操作结東时,它会调用这个AP,并返回操作结果。对于有着丰富经验的QT(诺基亚用来创建 跨平台图形用户界面应用程序的库)程序员来说,这就是他们的第二天性。因此,在异步编程中,你只需 要一个线程。 第一章 Boost. asio人门 10

...展开详情
试读 92P Boost.Asio C++ 网络编程 中文版
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
chaojie2003 太贵了,不值得
2018-08-15
回复
yinyuewei 不错,非常好,我看看有没有积分
2018-07-09
回复
asdfghjklqwertasdf 下载过表示现在缺积分
2017-12-04
回复
wen_n 内容容易理解,还是很实用的
2017-06-04
回复
子丶不语 资源很好,很实用
2015-11-17
回复
qq_32857065 还是比较容易理解
2015-11-16
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
关注 私信
上传资源赚钱or赚积分
最新推荐
Boost.Asio C++ 网络编程 中文版 33积分/C币 立即下载
1/92
Boost.Asio C++ 网络编程 中文版第1页
Boost.Asio C++ 网络编程 中文版第2页
Boost.Asio C++ 网络编程 中文版第3页
Boost.Asio C++ 网络编程 中文版第4页
Boost.Asio C++ 网络编程 中文版第5页
Boost.Asio C++ 网络编程 中文版第6页
Boost.Asio C++ 网络编程 中文版第7页
Boost.Asio C++ 网络编程 中文版第8页
Boost.Asio C++ 网络编程 中文版第9页
Boost.Asio C++ 网络编程 中文版第10页
Boost.Asio C++ 网络编程 中文版第11页
Boost.Asio C++ 网络编程 中文版第12页
Boost.Asio C++ 网络编程 中文版第13页
Boost.Asio C++ 网络编程 中文版第14页
Boost.Asio C++ 网络编程 中文版第15页
Boost.Asio C++ 网络编程 中文版第16页
Boost.Asio C++ 网络编程 中文版第17页
Boost.Asio C++ 网络编程 中文版第18页
Boost.Asio C++ 网络编程 中文版第19页

试读结束, 可继续读1页

33积分/C币 立即下载 >