前言(CSDN也有Markdown了,好开森)

实战出精华

在具体的C++网络编程中提升你的逼格

John Torjo



Boost.Asio C++ 网络编程

Copyright ? 2013 Packt Publishing


关于作者

做为一名权威的C++专家,John Torjo 的编程生涯已经超过了15年,在这15年中,除了偶尔用 C#Java 写程序,他大部分时间都在研究 C++

他还很喜欢在 C++ Users Journa l和其他杂志上写一些编程相关的文章。

闲暇的时候,他喜欢玩扑克、开快车。他有很多自由职业,其中一个就把他玩扑克和编程的爱好结合在了一起,如果你想联系他,可以发邮件到[email protected]。



我要感谢我的朋友 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年里,他做的是 iOSOSX 应用开发,但是 C++ 陪伴他度过了早期个人游戏项目开发的激情岁月。



我要感谢 John,因为他我才能做这本书的评审



Nicolae Ghimbovschi

一个参加各类 C++ 项目超过5年的天才个人开发者。他主要参与一些企业通信工程的项目。作为一个狂热的 Linux 爱好者,他喜欢利用不同的操作系统、脚本工具和编程语言进行测试和实验。除了编程,他还喜欢骑自行车、瑜伽和冥想。



我要感谢 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 成员函数
    其他注意事项
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
    异步服务端中的线程
异步操作
代理实现
总结


第六章: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?我们将深入了解异步编程——一种比同步更需要技巧,且更有乐趣的编程方式。这一章也是在开发你自己的网络应用时可以作为参考的一章。

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

第四章:客户端和服务端会深入讨论如何用 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)

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

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

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

读者反馈

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

你只需要发送一封邮件到 [email protected] 即可进行反馈,注意在邮件的主题中注明书名。

如果你有一个擅长的专题,想撰写一本书或者为某本书做贡献。请阅读我们在 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,然后通过选择书名的方式来查看。

答疑

如果你有关于本书任何方面的问题,你可以通过 [email protected] 联系我们。我们将尽我们最大的努力进行解答

时间: 2024-10-05 12:17:30

前言(CSDN也有Markdown了,好开森)的相关文章

新键盘吼开森

今天同事买的cherry和我买的雷声粉晶到了 吼开森  感觉cherry 8.0那个箱子真的高大上  就买箱子送键盘系列 雷蛇粉晶的腕托很苏胡 就买腕托送键盘系列 哈哈哈哈哈哈哈哈哈哈 原文地址:https://www.cnblogs.com/MissFu/p/8521386.html

51CTO会员开通成功!开森!

很好,是理想中的学习平台,果断买了!^_^ 开森ing 原文地址:http://blog.51cto.com/13601545/2324935

Boost.Asio入门(CSDN也有Markdown了,好开森)

Boost.Asio入门 首先,让我们先来了解一下什么是 Boost.Asio?怎么编译它?了解的过程中我们会给出一些例子.然后在发现 Boost.Asio 不仅仅是一个网络库的同时你也会接触到 Boost.Asio 中最核心的类--io_service. 什么是Boost.Asio 简单来说,Boost.Asio是一个跨平台的.主要用于网络和其他一些底层输入/输出编程的 C++ 库. 网络 API 的设计方式有很多种,但是 Boost.Asio 的的方式远远优于其它的设计方式.它在 2005

Boost.Asio基本原理(CSDN也有Markdown了,好开森)

Boost.Asio基本原理 这一章涵盖了在使用Boost.Asio时必须知道的一些事情.我们也将深入研究比同步编程更复杂.更有乐趣的异步编程. 网络API 这一部分包含了当使用Boost.Asio编写网络应用程序时必须知道的事情. Boost.Asio命名空间 Boost.Asio的所有内容都包含在boost::asio命名空间或者其子命名空间内. * boost::asio:这是核心类和函数所在的地方.重要的类有io_service和streambuf.类似read, read_at, re

走近CSDN博客Markdown编辑器

Markdown是什么 为什么使用Markdown Markdown的优点 全新的体验 如何切换到MarkDown编辑器 通过发表文章页面切换到MarkDown编辑器 通过博客配置将Markdown设置为默认编辑器 初识Markdown编辑器布局 总体布局 通过博客管理菜单可以切换到HTML编辑器 点击工具栏的帮助按钮可以打开帮助面板 发表博客 设置摘要和标签 文章设置 发布 Markdown是什么? Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成

CSDN markdown 编辑器 第一篇

最近CSDN 新出了markdown编辑器.我这也算是尝鲜. 最初接触markdown编辑器是在2011年.那个时候,使用markdown编辑器写blog.然后将blog放到github上托管.markdown还不能像现在这样可以实时编辑显现.那个时候有一个markdown engine专门将markdown语法转换成html. 每次感觉自己写对了.实际上语法各种不对. 究竟什么是markdown? markdown是一种更加贴近自然表达的语法,它可以转换成互联网上通用展示的html格式. -

用了 CSDN 的 markdown 编辑器吐槽下~~

吐槽一下.. . 第一次用 CSDN 的这个 markdown 编辑器,首先感官上看起来还是非常大气相比曾经那个 HTML 编辑器实在时上了N个档次,但实际使用的体验实在是比較糟糕的.希望能改进下哦: 提示面板始终提示,选择了不再提示也没用 上传图片不能自己主动加入水映了,然后试了原来的 html 编辑器,发现水印仅仅有主站的域名而不是博客网址了 编辑标题的地方不是非常明显,第一次用的时候找不到会非常郁闷. 改动文章提交了4次都没成功,全是server 502 错误,真心崩溃 当改动一篇文章,还

基于轻开平台开发的部分系统展示,同时祝CSDN的所有程序员新年快乐

达品客电子商务系统首页 下半部分 公益网店自助管理 某政府网站 祝大家在2015年事事如意.天天开心,BUG为零.需求不变更.系统运行飞快.数据自动更新!!! 轻开平台资源下载及说明 平台免费下载:http://download.csdn.net/detail/tx18/8381859 最新开发手册下载:http://download.csdn.net/detail/tx18/8411089 开发实例:轻开B2C电子商务网站,免费下载:http://download.csdn.net/detai

Markdown简明教程5-CSDN Markdown快速上手

0.目录 目录 前言 CSDN Markdown特点 CSDN Markdown快速上手 1 使用快捷键 粗体斜体 引用 链接 高亮代码块 图片 标题 列表 分割线 撤销重复 2 使用离线写作 3 使用导入导出 4 个性定制文章模板 声明 1. 前言 Markdown是一种轻量级的标记语言,把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准.CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞.但是,不少博友可能对Markdown比较生疏,本