logo资料库

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

第1页 / 共92页
第2页 / 共92页
第3页 / 共92页
第4页 / 共92页
第5页 / 共92页
第6页 / 共92页
第7页 / 共92页
第8页 / 共92页
资料共92页,剩余部分请下载后查看
开始
第一章 Boost.Asio入门
第二章 Boost.Asio基本原理
第三章 回显服务端/客户端
第四章 客户端和服务端
第五章 同步VS异步
第六章 Boost.Asio-其他特性
第七章 Boost.Asio-进阶
结束
Boost.Asio C++ 网络编程 目錄 1. 开始 2. 第一章 Boost.Asio入门 3. 第二章 Boost.Asio基本原理 4. 第三章 回显服务端/客户端 5. 第四章 客户端和服务端 6. 第五章 同步VS异步 7. 第六章 Boost.Asio-其他特性 8. 第七章 Boost.Asio-进阶 9. 结束 2
Boost.Asio C++ 网络编程 实战出精华 在具体的C++网络编程中提升你的逼格 John Torjo Boost.Asio C++ 网络编程 Copyright © 2013 Packt Publishing 关于作者 做为权威的C++专家,除了偶尔用C#和Java写程序,John Torjo把他超过15年编程生涯中的大部分时间都 贡献给了C++。 他也很喜欢在C++ Users Journal和其他杂志上写一些编程相关的文章。 闲暇的时候,他喜欢玩扑克、开快车。他有很多个自由职业,其中一个就把他的两个爱好结合在一起,一 个是玩扑克,另外一个是编程。如果你想联系他,可以发邮件到john.code@torjo.com。 我要感谢我的朋友Alexandru Chis, Aurelian Hale, Bela Tibor Bartha, Cristian Fatu, Horia Uifaleanu, Nicolae Ghimbovschi以及Ovidiu Deac。感谢他们对本书提出的反馈和意见。同时我也要感谢Packt公司各 位对我频繁错过截稿日期行为的包容。然后最需要感谢的是Chris Kohlhoff,Boost.Asio的作者,是他写出 了如此伟大的库。 把这本书献给我最好的朋友Darius。 关于评审员 Béla Tibor Bartha 一个使用过多种技术和语言进行开发的专业软件工程师。尽管在过去的4年里,他做的是iOS和OSX应用开 发,但是C++陪伴他度过了早期个人游戏项目开发的激情岁月。 我要感谢John,因为他我才能做这本书的评审 Nicolae Ghimbovschi 一个参加各类C++项目超过5年的天才个人开发者。他主要参与一些企业通信工程的项目。作为一个狂热的 Linux爱好者,他喜欢利用不同的操作系统、脚本工具和编程语言进行测试和实验。除了编程,他还喜欢骑 自行车、瑜伽和冥想。 开始 3
Boost.Asio C++ 网络编程 我要感谢John让我来评审这本书 关于译者 非主流程序猿mmoaay,技术很烂,喜欢平面设计、鼠绘、交友、运动和翻译,但是确作为一只程序猿混 迹在IT行业。热爱开源,技术烂就只好做做设计和翻译的工作。 微博:http://weibo.com/smmoaay 关于avplayer http://avplayer.org 中国第一技术社区。 目录 前言 第一章:Boost.Asio入门 什么是Boost.Asio? 历史 依赖 编译 Boost.Asio 重要的宏 同步VS异步 异常VS错误代码 Boost.Asio中的多线程 不仅仅是网络 计时器 io_service类 总结 第二章:Boost.Asio基本原理 网络API Boost.Asio命名空间 IP地址 端点 Sockets 同步错误代码 Socket成员函数 其他注意事项 开始 4
Boost.Asio C++ 网络编程 read/write/connect自由函数 connect函数 read/write函数 异步编程 为什么要异步? 异步run(),run_one(),poll(),poll_one() 持续运行 run_one(),poll(),poll_one()函数 异步工作 异步post() VS dispatch() VS wrap() 保持运行 总结 第三章:回显服务端/客户端 TCP回显服务端/客户端 TCP同步客户端 TCP同步服务端 TCP异步客户端 TCP同步服务端 代码 UDP回显服务端/客户端 UDP同步回显客户端 UDP同步回显服务端 总结 第四章:客户端和服务端 同步客户端/服务端 同步客户端 同步服务端 异步客户端/服务端 异步客户端 异步服务端 总结 第五章:同步VS异步 同步异步混合编程 客户端和服务端之间消息的互相传递 客户端软件中的同步I/O 服务端软件中的同步I/O 同步服务端中的线程 客户端软件中的异步I/O 服务端软件中的异步I/O 异步服务端中的线程 异步操作 代理实现 总结 开始 5
Boost.Asio C++ 网络编程 第六章:Boost.Asio-其他特性 std streams和std buffer I/O Boost.Asio和STL流 streambuf类 处理streambuf对象的自由函数 协程 总结 第七章:Boost.Asio-进阶 Asio VS Boost.Asio 调试 处理程序跟踪信息 例子 处理程序跟踪文件 SSL Boost.Asio的Windows特性 流处理 随机存储处理 对象处理 Boost.Asio的POSIX特性 本地sockects 连接本地sockets POSIX文件描述符 Fork 总结 索引 前言 网络编程由来已久,并且是一个极富挑战性的任务。Boost.Asio对网络编程做了一个极好的抽象,从而保证 只需要少量的编程就可以实现一个优雅的客户端/服务端软件。在实现的过程中,它能让你体会到极大的乐 趣。而且更为有益的是:Boost.Asio包含了一些非网络的特性,用Boost.Asio写出来的代码紧凑、易读,而 且如果你按照我在书中所讲的来做,你的代码会无懈可击。 这本书涵盖了什么? 第一章:Boost.Asio入门将告诉你Boost.Asio是什么?怎么编译它?顺带着会有一些例子。你会发现 Boost.Asio不仅仅是一个网络库。同时你也会接触到Boost.Asio中最核心的类io_service。 第二章:Boost.Asio基本原理包含了你必须了解的内容:什么时候用Boost.Asio?我们将深入了解异步编程 ——一种比同步更需要技巧,且更有乐趣的编程方式。这一章也是在开发你自己的网络应用时可以作为参 考的一章。 开始 6
Boost.Asio C++ 网络编程 第三章:回显服务端/客户端将会告诉你如何实现一个小的客户端/服务端应用;也许这会是你写过的最简单 的客户端/服务端应用。回显应用就是把客户端发过来的消息发送回去然后关闭客户端连接的服务。我们会 先实现一个同步的版本,然后再实现一个异步的版本,这样就可以非常容易地看到它们之间的不同。 第四章:客户端和服务端会深入讨论如何用Boost.Asio创建一个简单的客户端/服务端应用。我们将讨论如 何避免诸如内存泄漏和死锁的缺陷。所有的程序都只是实现一个简单的框架,从而使你能更方便地对它们 进行扩展以满足你的需求。 第五章:同步VS异步会带你了解在同步和异步方式之间做选择时需要考虑的事情。首要的事情就是不要混 淆它们。在这一章,我们会发现实现、测试和调试每个类型应用是非常容易的。 第六章:Boost.Asio的其他特性将带你了解Boost.Asio一些不为人知的特性。你会发现,虽然std streams和 streambufs有一点点难用,但是却表现出了它们得天独厚的优势。最后,是姗姗来迟的Boost.Asio协程,它 可以让你用一种更易读的方式来写异步代码。(就好像写同步代码一样) 第七章:Boost.Asio进阶包含了一些Boost.Asio进阶问题的处理。虽然在日常编程中不需要深入研究它们, 但是了解它们对你有益无害(Boost.Asio高级调试,SSL,Windows特性,POSIX特性等)。 读这本书你需要准备什么? 如果要编译Boost.Asio以及运行本书中的例子,你需要一个现代编译器。例如,Visual Studio 2008及其以 上版本或者g++ 4.4及其以上版本 这本书是为谁准备的? 这本书对于那些需要进行网络编程却不想深入研究复杂的原始网络API的开发者来说是一个福音。所有你需 要的只是Boost.Asio提供的一套API。作为著名Boost C++库的一部分,你只需要额外添加几个#include文 件即可转换到Boost.Asio。 在读这本书之前,你需要熟悉Boost核心库的一些知识,例如Boost智能指针、boost::noncopyable、Boost Functors、Boost Bind、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) 开始 7
Boost.Asio C++ 网络编程 专业词汇和重要的单词用黑体显示 [!警告或者重要的注释在这样的一个框里面] [?技巧在这样的一个框里面] 读者反馈 我们欢迎来自读者的反馈。告诉我们你对这本书的看法——你喜欢哪部分,不喜欢哪部分。读者的反馈对 我们非常重要,它能让我们写出对读者帮助更大的书。 你只需要发送一封邮件到feedback@packtpub.com即可进行反馈,注意在邮件的主题中注明书名。 如果你有一个擅长的专题,想撰写一本书或者为某本书做贡献。请阅读我们在www.packtpub.com/authors 上的作者指引。 用户支持 现在你已经是Packt书籍的拥有者,我们将告诉你一些事项,让你购买本书得到的收益最大化。 下载示例代码 你可以在http://www.packtpub.com登录你的帐号,然后下载你所购买的书籍的全部示例代码。同时,你也 可以通过访问http://www.packtpub.com/support进行注册,然后这些示例代码文件将直接发送到你的邮箱。 纠错 尽管我们已经尽最大的努力去保证书中内容的准确性,但是错误还是不可避免的。如果你在我们的书籍中 发现了错误——也许是文字,也许是代码——如果你能将它们报告给我们,我们将不胜感激。这样的话, 你不仅能帮助其他读者,同时也能帮助我们改进这本书的下一个版本。如果你发现任何需要纠正的地方, 访问http://www.packtpub.com/submit-errata,选择你的书籍,点击errata submission form链接,然后输 入详细的纠错信息来将错误报告给我们。一经确定,你的提交就会通过,然后这个纠错就会被上传到我们 的网站,或者添加到那本书的纠错信息区域的纠错列表中。所有已发现的纠错都可以访问 http://www.packtpub.com/support,然后通过选择书名的方式来查看。 答疑 如果你有关于本书任何方面的问题,你可以通过questions@packtpub.com联系我们。我们将尽我们最大的 努力进行解答 开始 8
分享到:
收藏