Windows网络编程案例教程(21世纪高等学校规划教材 计算机应用)
定 价:44.5 元
丛书名:21世纪高等学校规划教材·计算机应用
- 作者:董相志 编著
- 出版时间:2014/1/1
- ISBN:9787302344896
- 出 版 社:清华大学出版社
- 中图法分类:TP316.86
- 页码:414
- 纸张:胶版纸
- 版次:1
- 开本:16开
本书针对有C/C++语言基础的网络编程初学者,以WinSock API和MFC Sockets为编程主线,以通俗易懂的方法介绍Windows平台下的网络编程方法,引导读者循序渐进地提高网络编程能力。本书内容丰富,涵盖了网络编程模型、P2P网络模型、Windows网络编程、WinSock2 API编程、阻塞/非阻塞模式套接字编程、异步套接字编程、Blocking I/O编程、select I/O编程、WSAAsyncSelect I/O编程、WSAEventSelect I/O编程、Overlapped I/O编程、I/O Completion Port编程、MFC套接字编程、WinInet API编程、MFC WinInet编程、FTP编程、HTTP编程、SMTP/POP3编程、Windows多线程编程、WinPcap编程、网络五子棋的设计与实现等。
本书是编者在多年教学和实践工作的基础上编写的,其语言生动流畅,分析深入浅出,步骤精炼,图文并茂。本书注重应用、强调实践,案例编码覆盖主流技术和方法,能够帮助读者快速地学以致用。本书可作为各类学校的网络编程专业教材,也可作为网络编程人员的自学参考用书。
互联网编程有两个主流方向: 一个是Web开发; 另一个是网络编程。从应用层面看,前者看起来相对高端,后者看起来偏中低端。大家耳熟能详的网站类应用,如网易、搜狐、新浪、淘宝等属于前者,称做Web应用。而另一些“遍地开花”的应用,如QQ、MSN、迅雷、PPLive、Skype、防火墙、网络监控、流量计费、IIS服务器、Tomcat服务器等属于后者,称做网络工具。
开发Web应用,它的底层支撑平台是Web服务器; 开发网络工具,它的底层支撑平台是操作系统。大家所说的Web开发和网络编程一个高端、一个中低端即源于此。如果硬要在二者之间划出一个严格的界限是不甚妥当的。现在的技术趋势是你中有我,我中有你,相互融合,“上九天揽月,下五洋捉鳖”可谓当下互联网编程的真实写照。本书内容定位于网络工具的编程方法,基础根基是操作系统,不讨论基于Web服务器的Web编程。
“网络编程”这门课到底应该选用哪种语言教学,不少老师感到很困惑。通常,用Java语言编的程序离不开JVM虚拟机支持,用C#语言编的程序离不开.NET虚拟机支持,且Java语言和C#语言非常适合Web编程。Windows操作系统是用C/C++语言编写的,显然,C/C++更适合网络编程这门课,更适合开发互联网中神通广大、中流砥柱的应用。
本书设计了两条教学主线: 一条是基于Windows API编程; 另一条是基于MFC编程。对于前者,具体到WinSock2 API编程; 对于后者,具体到CAsyncSocket类、CSocket类编程。这两条教学主线相互对照,相得益彰,构成本书教学的核心和灵魂。
本书内容共分为9章。第1章网络编程概述,讨论了网络编程模型、P2P网络模型、Windows网络编程。第2章WinSock2 API编程,讲述Win32 API窗体编程、WinSock2 API编程框架、阻塞/非阻塞模式套接字编程、异步套接字编程、Blocking I/O编程、select I/O编程、WSAAsyncSelect I/O编程、WSAEventSelect I/O编程、Overlapped I/O编程、Completion Port编程。第3章MFC套接字编程,讲述MFC套接字编程模型、CAsyncSocket类编程、CSocket类编程。第4~6章分别讲述了Windows Internet编程、MFC Internet编程和SMTP/POP3编程。第7章Windows多线程编程,讲述了用C和Win32 API编写多线程以及用C++和MFC编写多线程两种方法。第8章WinPcap编程,讲述了WinPcap编程框架和WinPcap编程应用。第9章网络五子棋,从实战角度详细讲述人机对战和网络对战项目的设计。
本书有幸得到鲁东大学邹海林教授、杨洪勇教授、徐邦海副教授、寇光杰副教授、李阿丽老师、曲海平博士、田生文博士和烟台市财政局崔运政博士审阅,并提出许多宝贵的意见,编者铭记于心。
本书有幸得到清华大学出版社支持,有幸得到教材事业部主任魏江江老师关注,有幸得到责任编辑黄芝老师严谨审校、精心编排,感激之情无以言表。
高山无声,水流花开,各方涓涓细爱汇集于此,终使本书与读者见面。
本书适合有C/C++语言基础的读者学习,每一章都配有精选的案例或程序片段,有助于读者反复揣摩、练习提高。本书完整的案例都在VC++2010环境下调试通过,涵盖了主流技术和方法,体现了教学目的,贴近实际应用。
互联网如同一个巨大的天体飞船,裹挟着整个地球,全人类、全社会为之疯狂,为之飞奔。人们无从准确地知晓它的终点,更无从清晰地预见它的未来,能够唯一感受到的是它惊人的发展速度,能够唯一体会到的是它无穷的变化方式。或许正因如此,互联网编程是极具魅力与挑战的,吸引着越来越多的人进入这个行业。但由于编者水平有限,书中错误或不妥之处在所难免,恳请各位读者批评指正。
您的每一处指正,编者都如获至宝,不胜感激(编者邮箱: upsunny2008@163.com)。
编者
2013年10月于山东烟台
第1章网络编程概述
1.1网络编程模型
1.1.1开放系统互连参考模型
1.1.2TCP/IP协议栈模型
1.1.3套接字编程模型
1.1.4网间多线程会话模型
1.2P2P网络模型
1.2.1P2P的发展背景
1.2.2三代P2P网络
1.2.3P2P网络分类
1.2.4P2P典型应用举例
1.3Windows网络编程
1.3.1Windows网络编程框架
1.3.2Windows网络协议
1.3.3Windows Sockets编程模型 第1章网络编程概述
1.1网络编程模型
1.1.1开放系统互连参考模型
1.1.2TCP/IP协议栈模型
1.1.3套接字编程模型
1.1.4网间多线程会话模型
1.2P2P网络模型
1.2.1P2P的发展背景
1.2.2三代P2P网络
1.2.3P2P网络分类
1.2.4P2P典型应用举例
1.3Windows网络编程
1.3.1Windows网络编程框架
1.3.2Windows网络协议
1.3.3Windows Sockets编程模型
1.3.4WinSock2工作模式
1.3.5第一个网络程序——hostent
习题1
第2章WinSock2 API编程
2.1Win32 API窗体编程
2.1.1弹出一个消息框
2.1.2创建一个窗体
2.1.3为窗体添加控件
2.2WinSock2 API编程框架
2.2.1WinSock2 API程序结构
2.2.2WinSock2 API库函数
2.2.3WinSock2的新发展
2.3阻塞/非阻塞模式套接字编程
2.3.1阻塞模式套接字客户机编程
2.3.2阻塞模式套接字服务器编程
2.3.3非阻塞模式套接字客户机编程
2.3.4非阻塞模式套接字服务器编程
2.3.5套接字错误处理
2.4异步套接字编程
2.4.1异步套接字客户机编程
2.4.2异步套接字服务器编程
2.4.3服务器响应多客户机的并发访问
2.5WinSock2 I/O模型编程
2.5.1Blocking I/O模型
2.5.2select I/O模型
2.5.3WSAAsyncSelect I/O模型
2.5.4WSAEventSelect I/O模型
2.5.5Overlapped I/O模型
2.5.6I/O Completion Port模型
2.5.7I/O模型的选择
习题2
第3章MFC套接字编程
3.1MFC套接字编程模型
3.1.1MFC编程框架
3.1.2CAsyncSocket类编程模型
3.1.3CSocket类编程模型
3.1.4派生套接字类
3.1.5MFC套接字类的阻塞/非阻塞模式
3.2CAsyncSocket类编程实例
3.2.1点对点通信功能和技术要点
3.2.2创建客户机
3.2.3客户机代码分析
3.2.4创建服务器
3.2.5服务器代码分析
3.2.6点对点通信客户机与服务器联合测试
3.3CSocket类编程实例
3.3.1聊天室功能和技术要点
3.3.2创建聊天室服务器
3.3.3聊天室服务器代码分析
3.3.4创建聊天室客户机
3.3.5聊天室客户机代码分析
3.3.6聊天室客户机与服务器联合测试
习题3
第4章Windows Internet编程
4.1WinInet API编程
4.1.1WinInet HINTERNET句柄
4.1.2WinInet通用API
4.1.3关闭HINTERNET句柄
4.2WinInet FTP编程
4.2.1FTP API简介
4.2.2FTP服务器文件目录遍历
4.2.3FTP服务器目录导航
4.2.4创建和删除FTP服务器目录
4.2.5从FTP服务器上获取文件
4.2.6上传文件到FTP服务器
4.2.7从FTP服务器上删除文件
4.2.8FTP服务器目录或文件的重命名
4.3WinInet HTTP编程
4.3.1HTTP API基本操作
4.3.2HTTP Cookies编程
4.3.3HTTP Authentication编程
4.3.4HTTP URL编程
4.3.5获取HTTP请求的头部信息
习题4
第5章MFC Internet编程
5.1MFC WinInet概述
5.1.1MFC WinInet基本类
5.1.2MFC WinInet类之间的关联
5.1.3MFC WinInet客户机编程步骤
5.1.4MFC WinInet经典编程模型
5.2简易FTP客户机编程实例
5.2.1FTP客户机/服务器模型
5.2.2功能定义与技术要点
5.2.3FTP服务器的搭建
5.2.4简易FTP客户机的创建步骤
5.2.5主要代码
5.2.6系统测试
5.3HTTP浏览器编程实例
5.3.1浏览器/服务器工作模型
5.3.2MFC CHtmlView编程模型
5.3.3MFCIE的功能和技术要点
5.3.4MFCIE的创建步骤
5.3.5MFCIE功能测试
习题5
第6章SMTP/POP3编程
6.1SMTP协议
6.1.1SMTP工作模型
6.1.2SMTP命令解析
6.1.3SMTP响应状态码
6.2POP3协议
6.2.1POP3工作模型
6.2.2POP3命令解析
6.2.3用POP3命令与163邮箱会话
6.3MIME邮件扩展
6.3.1MIME对电子邮件协议的扩展
6.3.2MIME对邮件信头的扩展
6.3.3MIME邮件的内容类型
6.3.4Base64编码
6.4SMTP协议编程实例
6.4.1SMTP发送邮件工作模型
6.4.2功能和技术要点
6.4.3项目创建步骤
6.4.4主要代码
6.4.5项目测试
6.5POP3协议编程实例
6.5.1POP3客户机工作模型
6.5.2功能和技术要点
6.5.3项目创建步骤
6.5.4项目测试
习题6
第7章Windows多线程编程
7.1进程与线程
7.1.1进程与线程的关系
7.1.2Windows进程的内存结构
7.1.3Windows线程的优先级
7.2用C和Win32 API编写多线程
7.2.1Win32 API线程编程
7.2.2用C语言编写多线程
7.2.3线程同步
7.2.4创建多线程的步骤
7.2.5多线程程序——笑脸
7.3用C++和MFC编写多线程
7.3.1MFC线程类
7.3.2用户界面线程
7.3.3工作线程
7.3.4线程同步类
7.3.5MFC多线程程序——自行车比赛
习题7
第8章WinPcap编程
8.1WinPcap概述
8.1.1WinPcap的功能
8.1.2Wireshark网络分析工具
8.1.3WinDump网络嗅探工具
8.1.4WinPcap的获取和安装
8.1.5WinPcap工作模型
8.1.6NPF与NDIS的关系
8.1.7NPF工作模型
8.1.8WinPcap开发环境配置
8.2WinPcap编程框架
8.2.1结构体与宏定义
8.2.2WinPcap API函数
8.2.3过滤器表达式
8.2.4程序的创建和测试
8.3WinPcap编程应用
8.3.1获取网络设备列表
8.3.2打开适配器捕获数据包
8.3.3捕获和打印所有数据包
8.3.4过滤数据包
8.3.5分析数据包
8.3.6统计网络流量
习题8
第9章网络五子棋
9.1五子棋简介
9.1.1棋盘和棋子
9.1.2五子棋术语
9.1.3行棋规则
9.1.4五子棋的人机博弈
9.1.5如何判断胜负
9.2人机对战系统设计
9.2.1功能需求
9.2.2创建项目程序框架
9.2.3导入资源文件
9.2.4主菜单设计
9.2.5人机对战项目类图
9.2.6消息结构体设计
9.2.7人机对战逻辑模型
9.2.8游戏基类CGame的设计
9.2.9人机对战类COneGame的设计
9.2.10棋盘类CTable的设计
9.2.11界面类CFiveDlg的设计
9.2.12项目测试
9.3网络对战系统设计
9.3.1扩展功能需求
9.3.2定义对话消息
9.3.3网络对战新增界面元素
9.3.4网络对战基本类图
9.3.5网络对战通信模型
9.3.6CFiveSocket类的设计
9.3.7CTwoGame类的设计
9.3.8修改CTable类的设计
9.3.9CServerDlg类和CClientDlg类的设计
9.3.10CNameDlg类和CStatDlg类的设计
9.3.11完善CFiveDlg类的设计
9.3.12项目测试
习题9
参考文献