
本书以Visual Studio 2008为平台,介绍Visual C++网络编程。全书共12章,分上、下两篇共四个部分。 上篇为“MFC网络编程与Internet应用开发”,暂不涉及网络协议,而是用现成的MFC类库和API开发人们身边常见的典型应用(主要为客户端程序)。上篇又分两个部分:第一部分(第1~2章),介绍网络编程背景和MFC Socket编程;第二部分(第3~6章),介绍Internet应用开发,以及典型实例的开发过程。下篇为“Winsock编程和基于TCP/IP应用开发”,进一步深入到Winsock API和应用层协议,详细介绍套接字接口编程基础、P2P以及网络应用协议主要功能的编程实现。下篇也分为两个部分:第三部分(第7~8章),介绍Winsock API编程基础和P2P编程;第四部分(第9~12章),介绍基于TCP/IP应用层主要协议(HTTP/FTP/POP3)的程序的实现原理和编程方法。 本书配有光盘,提供同步教学课件和所有源代码文件。 读者对象:本书可作为计算机及相关专业本、专科网络编程的教材或参考书。同时,为广大电脑爱好者、网络爱好者、编程爱好者、软件发烧友、电脑网络DIY玩家成为网络高手打好基础。
前 言 我们生活在信息时代,计算机和网络是这个时代的产物和标志。如今,在普通大众身边已经形成了一个计算机网络的精彩世界,它以互联网为核心,以PC、3G手机等形态万千的智能终端高科技产品为触角,深入每一个人的日常生活。人们身处其中,如此真切地感受到它的存在。互联网已经成为区别于自然界的第二大自然(我们称为“人工自然”)。这个“第二自然”比天然的自然更贴近人类个体的真实生活,可以说,我们每个人其实是直接生活在“第二自然”之中。IT产业就是为了创造这个人工自然界而生的,软件开发作为IT业的主领域,在信息社会的自然进化中起着主导作用。打开计算机、打开浏览器,用户接触到的几乎都是网络应用软件,如各式各样的即时通信工具、下载工具、Web应用……展望未来的IT产业,互联网将成为中心,网络编程已成为当代软件开发的主流! 1.本书特色 本书以Visual Studio 2008作为平台,介绍 Visual C++网络编程,具有如下特色。 (1)以看待自然事物的眼光去理解互联网世界及运行于其上形形色色的网络程序,从对计算机网络世界历史、演变进化规律的把握中领悟各种网络程序的工作原理、技术渊源和网络编程中涉及的相关概念的实质。 (2)通过一系列实例揭示一个个典型网络应用的本质,以启发读者的好奇心、探索欲和创新意识。从普通人对信息时代生活的主观体验和感性认识出发,从身边应用讲起,从现象到本质,由表及里深入浅出地讲解网络编程。 (3)强调软件程序与网络如鱼儿和水一样密不可分的关系,不仅介绍编程技巧,还适当地介绍相关网络知识并详细给出网络环境配置、搭建步骤,使读者能很方便地运行书中实例。 (4)在本书程序之间实现互操作,如客户端和服务器对接、接入第三方程序、程序之间整合集成为套件等,使书中每个例子不再是孤立的实体,而是整个互联网自然世界的一分子。 (5)联系实际,将书中的例子程序与当下流行的产品软件做比较,指出它们在基本原理上的相通之处以及书中原型程序的局限性和完善改进的方向,从而激发读者从事实际应用性网络编程开发的热情。 (6)适时地由所讲实例延伸开去,介绍当前互联网真实现状和网络应用的流行趋势,提出很多新观点,为读者打开各种热门新技术、新应用的窗口,对于大家开拓视野、了解网络最新动态、认清信息社会发展的历史潮流很有帮助。 2.篇章结构 全书共12章,分上、下两篇共四个部分,内容安排如下。 上篇为“MFC网络编程与Internet应用开发”,本篇暂不涉及网络协议,而是用现成的MFC类库和API开发人们身边常见的典型应用(主要为客户端程序)。该篇又分两个部分:第一部分(第1~2章),介绍网络编程背景和MFC Socket编程;第二部分(第3~6章),介绍Internet 应用开发,以及典型实例的开发过程。 第1章 生动地描绘计算机网络世界演化史;介绍Visual Studio 2008环境基本操作和网络编程的实质。 第2章 MFC Socket类编程。MFC两个基本Socket类(CAsyncSocket和CSocket)的使用和编写Socket程序常用的一种对话框指针机制。介绍三个不同版本Socket程序互相之间的通信以及接入第三方程序,揭示Socket编程实现进程通信方法。 第3章 聊天应用开发。介绍聊天软件技术的渊源和演变,开发聊天室程序并与QQ群对比,说明从传统聊天室到即时通讯软件的发展脉络。 第4章 浏览器开发。用CHtmlView类定制开发IE内核浏览器。通过浏览器无差别地访问网络上和本地的各种资源,展示了在浏览器中的统一特征。 第5章 开发FTP上传/下载工具软件。FTP网络环境配置、搭建,分别在本地计算机和实际局域网两种不同环境下测试程序,比较FTP与其他流行下载技术,指出其局限性。 第6章 电子邮件客户端开发。用MAPI接口开发邮件客户端,Outlook辅助运行。同时介绍邮件服务商、邮件系统的概念,免费邮箱的申请,邮件服务器、账户设置,搭建邮件客户程序运行环境并通过实验研究了邮件收发环境的性质,让读者更好地了解邮件系统工作过程。 下篇为“Winsock编程和基于TCP/IP应用开发”,进一步深入到Winsock API和应用层协议,详细介绍套接字接口编程基础、P2P以及网络应用协议主要功能的编程实现。该篇也分两个部分:第三部分(第7~8章),介绍Winsock API编程基础和P2P编程;第四部分(第9~12章),介绍基于TCP/IP应用层主要协议(HTTP/FTP/POP3)的程序的实现原理和编程方法。 第7章 Winsock API原理及基础编程(包括TCP编程和UDP编程),重点介绍网络应用编程界面(Socket API)的本质。 第8章 P2P技术的原理和编程。通过一个简单的P2P程序介绍了P2P的基本概念并对P2P的理念进行了富有哲理性的感悟和思考。 第9章 基于HTTP的原理开发Web服务器程序。用第4章开发的浏览器访问这个Web服务器程序,浏览本地计算机上收藏的网页资源。 第10章 基于FTP原理开发FTP服务器,并对第5章已经完成的FTP客户端程序稍做修改,与之对接,整合成为一个完整的FTP软件套件。 第11章 基于POP3协议开发邮件客户端,该程序能够脱离Outlook独立地接收外网邮箱发来的信件。 第12章 介绍网络上近年流行的各种新技术、新应用,对网络应用的演变规律进行了探讨,首次发现并提出了信息社会发展的一个“10年规律”,勾勒出未来的面貌,希望读者能从中受到启发。 3.读者对象 本书从崭新的视角透视网络程序,用形象生动的语言介绍网络编程,软件与自然事物相类比,程序与网络环境相依存,编程技巧与探索实验并重,技术原理与哲理感悟交织,读者只要学过C++语言,懂一点计算机和网络的基本知识,就可以顺利地学习本书。普通高校计算机及相关专业本专科学生可以作为学习网络编程的教材或参考书。同时,我们期待本书能成为广大电脑爱好者、网络爱好者、编程爱好者、软件发烧友、电脑网络DIY玩家的好朋友,为他们中的更多人成为网络高手打好基础。 本书配套光盘,提供同步教学课件和所有源代码文件。 本书由南京师范大学郑阿奇主编,参加本套丛书编写的还有郑进、陶卫冬、邓拼搏、严大牛、韩翠青、王海娇、刘博宇、孙德荣、吴明祥、周何骏、徐斌、孙承龙、陈超、毛风伟等。 由于作者水平有限,书中错误在所难免,欢迎广大读者批评指正! 作者E-mail:easybooks@163.com 编 者 2011年4月
上篇 MFC网络编程与Internet应用开发 1 第1章 背景知识 3 1.1 计算机网络演化史 3 1.1.1 计算机网络的起源 3 1.1.2 计算机网络的进化 5 1.1.3 Internet时代 7 1.2 Visual C++开发平台 10 1.3 网络编程 24 1.3.1 什么是网络编程 24 1.3.2 网络程序 25 第2章 MFC Socket编程 29 2.1 MFC及其Socket类 29 2.1.1 MFC简介 29 2.1.2 MFC中的Socket类 31 2.2 C/S模式下网络程序的Socket通信实例 33 2.2.1 客户—服务器方式(C/S模式) 33 2.2.2 CAsyncSocket类编程基础 36 2.2.3 CAsyncSocket类程序的指针实现 60 2.2.4 CSocket类编程 73 2.3 与第三方程序的互通及Socket编程的本质 82 2.3.1 用自制程序访问第三方软件 82 2.3.2 进程通信的Socket机制与网络应用的同一性 88 第3章 即时通信:网络聊天软件 90 3.1 聊天软件技术的渊源和演变 90 3.1.1 网络聊天应用的起源 90 3.1.2 从聊天室到ICQ 92 3.1.3 即时通信与P2P 92 3.2 聊天室应用 93 3.2.1 聊天室功能效果展示 93 3.2.2 聊天室的开发 94 3.2.3 从聊天室到腾讯QQ 115 3.3 即时通信新趋势 119 第4章 万维网:浏览器中的Internet 120 4.1 浏览器发展简史 120 4.1.1 浏览器概述 121 4.1.2 浏览器简史 121 4.1.3 主流浏览器 122 4.2 MFC对浏览器应用开发的支持 123 4.2.1 文档/视图结构与CHtmlView类 124 4.2.2 WinInet类与Internet编程 128 4.3 浏览器开发 129 4.3.1 创建基于文档/视图结构的浏览器工程 129 4.3.2 定制开发自己的浏览器 131 4.3.3 通过浏览器看 145 4.4 浏览器中的Internet 149 4.4.1 浏览器与资源管理器 149 4.4.2 统一资源定位符 151 4.4.3 浏览器中的Internet 153 第5章 文件的上传与下载:FTP客户端开发 155 5.1 FTP的基本概念 155 5.1.1 什么是FTP 155 5.1.2 FTP工作原理 156 5.1.3 匿名FTP 156 5.2 FTP网络环境的搭建 157 5.2.1 FTP服务器的架设 157 5.2.2 用FlashFXP测试自己的FTP站点 163 5.3 制作自己的FTP上传下载器 166 5.3.1 MFC WinInet类对FTP的支持 166 5.3.2 创建工程、设计软件界面 166 5.3.3 编程实现 168 5.3.4 本地测试FTP上传下载器 175 5.4 FTP的实用性 183 5.4.1 访问实际的局域网 183 5.4.2 传输大文件的情况 185 5.4.3 FTP与其他下载技术 188 第6章 电子邮件 189 6.1 电子邮件概述 189 6.1.1 第一封电子邮件 189 6.1.2 邮件系统工作过程 190 6.1.3 电子邮件协议 192 6.1.4 邮件服务商与电子邮箱的选择 193 6.2 Outlook Express与邮件客户端环境的配置 194 6.2.1 Outlook Express简介 194 6.2.2 申请免费邮箱 195 6.2.3 Outlook Express的配置和使用 196 6.2.4 邮件收发环境的性质 203 6.3 电子邮件客户端程序开发 209 6.3.1 开发邮件程序的接口MAPI 209 6.3.2 编写电子邮件程序的步骤 210 6.3.3 电子邮件程序开发 211 6.4 网络邮件收发实验 222 下篇 Winsock编程和基于TCP/IP应用开发 229 第7章 Winsock API编程基础 231 7.1 Winsock API原理 231 7.1.1 网络协议栈 231 7.1.2 网络应用编程界面 234 7.1.3 Winsock API编程原理 238 7.2 TCP编程 244 7.2.1 TCP通信流程 244 7.2.2 TCP Socket API程序设计 245 7.2.3 Winsock API程序与MFC Socket类程序的等价性 256 7.3 UDP编程 258 7.3.1 UDP通信流程 258 7.3.2 UCP Socket API程序设计 259 7.3.3 UDP进程通信演示 266 第8章 P2P编程 270 8.1 P2P的发明 270 8.1.1 一个网络音乐发烧友捣鼓出的杰作 270 8.1.2 P2P概述 271 8.1.3 P2P原理 274 8.2 简单P2P软件的开发 276 8.2.1 软件使用效果展示 276 8.2.2 P2P通信规约 277 8.2.3 P2P聊天工具的开发过程 278 8.3 P2P带来的感悟 295 8.3.1 从P2P通信规约看网络协议的本质 295 8.3.2 P2P软件终端的“全息性” 297 第9章 HTTP编程:Web服务器的开发 302 9.1 HTTP原理 303 9.1.1 万维网的工作过程 303 9.1.2 超文本传输协议 304 9.2 Web服务器的开发 307 9.2.1 项目工程的架构 308 9.2.2 Web服务的界面总控 312 9.2.3 Web服务流程的实现 316 9.2.4 HTTP协议的实现 323 9.2.5 HTTP协议实现辅助代码 331 9.3 自制浏览器访问Web服务器的实验 337 9.3.1 实验准备 337 9.3.2 访问本地计算机上不同类的资源 339 9.3.3 根据相对路径访问特定目录下的资源 344 第10章 FTP编程:FTP服务器实例 346 10.1 FTP原理 347 10.1.1 FTP简介 347 10.1.2 FTP支持的文件类型和结构 347 10.1.3 FTP工作原理 348 10.1.4 FTP命令和应答 350 10.2 FTP服务器的实现 353 10.2.1 项目工程的架构 353 10.2.2 FTP服务的界面总控 359 10.2.3 FTP服务流程的实现 365 10.2.4 FTP的实现 374 10.2.5 FTP实现辅助代码 387 10.3 完整的FTP软件套件 403 10.3.1 FTP上传下载器的改造 404 10.3.2 自制FTP客户端与服务器的对接实验 405 第11章 POP3实现邮件接收程序 410 11.1 POP3原理 410 11.1.1 POP3协议的工作过程 411 11.1.2 POP3会话命令与应答 411 11.1.3 POP3工作实例 412 11.1.4 电子邮件报文格式举例 413 11.2 用POP3协议实现邮件接收 415 11.2.1 项目工程的架构 415 11.2.2 套接字管理功能实现 419 11.2.3 程序界面的控制代码 421 11.2.4 POP3协议的实现 423 11.2.5 POP3协议实现辅助 428 11.3 用自制POP3邮件程序接收信件 428 第12章 网络应用的演变与展望 432 12.1 两大演变趋势 432 12.1.1 永恒的矛盾:分散化与集中化 432 12.1.2 P2P统治因特网 433 12.1.3 网格与云计算 433 12.2 Internet应用模式的变迁 434 12.2.1 从C/S到B/S架构 434 12.2.2 从Web1.0到Web2.0阶段 436 12.3 网络大融合 438 12.3.1 3G与手机上网 439 12.3.2 三网融合 441 12.3.3 无线传感器与物联网 442 12.4 网络编程开发的新领域 442 12.4.1 Ajax 443 12.4.2 多核编程 443 12.4.3 C++/CLI编程 443 12.5 未来无限可能 444
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0140530