全书共10章,涉及240多个问题,覆盖了Visual C++.NET网络编程的大部分内容。本书利用大量生动有趣的编程案例、编程技巧从解决问题和答疑解惑入手,以因特网上最新资料为蓝本,以简洁明快的语言、清晰直观的条理,比较全面地对Visual C++网络编程过程中常见问题及故障给予了具体解决办法和答案。深入浅出地说明了Visual C++中最典型的和用途最广的程序设计方法,并且每个专题都有较全面的论述,许多内容是一般介绍Visual C++网络编程的书籍没有涉及的。\r\n 全书结构清晰、合理,范例实用、丰富,具有实用性和指导性。本书对从事Visual C++.NET开发与应用的广大科研人员、高校相关专业师生及编程爱好者亦不失为一本重要的自学、教学参考书。
第一章 网络编程基础\r\n\r\n1.1 网络拓扑结构\r\n1.2 以太网技术\r\n1.3 其他高速网络技术\r\n1.4 光以太网的现状及展望\r\n1.5 Internet整体结构\r\n1.6 网络分层模型\r\n1.7 TCP/IP协议\r\n1.8 网络进程通信原理\r\n\r\n第二章 Windows Sockets(WinSocket)\r\n\r\n2.1 Socket的由来\r\n2.2 Windows Sockets规范\r\n2.3 Windows Sockets中一些重要概念\r\n2.4 基于Windows Sockets网络编程\r\n2.5 Windows Sockets API函数\r\n2.6 Windows Sockets与UNIX Sockets连接编程\r\n2.7 利用MFC的Windows Sockets类进行网络编程\r\n2.8 异步Windows Sockets编程\r\n2.9 使用CAsyncSocket类编程\r\n2.10 使用CSocket类编程\r\n2.11 用CSocket实现无连接通信\r\n2.12 CAsyncSocket和CSocket编程的比较\r\n2.13 用自己派生的Socket类进行网络通信\r\n2.14 在服务器端控制Socket通信的客户端数目\r\n2.15 一个WinSock程序中同时可以打开多少个Socket连接\r\n2.16 为服务器设置一个合理的端口号\r\n2.17 在Windows Socket程序中得到本机的IP地址\r\n2.18 原始套接字\r\n2.19 Ping命令简介\r\n2.20 Internet控制信息协议(ICMP)\r\n2.21 用Windows Sockets实现Ping命令\r\n2.22 用Windows Sockets实现HTTP\r\n2.23 用Windows Sockets实现FTP\r\n2.24 Windows Socketsl.1与Windows Sockets 2的区别\r\n2.25 截获Windows Sockets\r\n2.26 将Sockets程序从UNIX移植到Windows\r\n2.27 建立客户CSocket\r\n2.28 利用“监听—转发”程序破译网管协议\r\n2.29 穿透代理服务器编程\r\n\r\n第三章 Win32Internet(WinInet)\r\n\r\n3.1 什么是WinInet\r\n3.2 WinInet如何使创建Internet客户端应用程序更容易\r\n3.3 MFC如何使创建Internet客户端应用程序更容易\r\n3.4 用MFCWinInet类编写Internet客户端应用程序\r\n3.5 用MFC建立通用的Internet客户端连接\r\n3.6 用MFC编写HTTP客户端应用\r\n3.7 用MFC实现FTP客户端应用\r\n3.8 用MFC编写gopher客户端应用\r\n3.9 下载Web页\r\n3.10 FTP文件\r\n3.11 检索Gopher目录\r\n3.12 使用OnStatusCallback\r\n3.13 传输文件时显示进度信息\r\n3.14 利用Win32网络函数创建一个网络浏览器\r\n3.15 用Win32网络函数编HTTP网络浏览器\r\n3.16 用WinInet实现HTTP的POST方法\r\n3.17 HTTP查询应用实例\r\n3.18 FTP查询应用实例\r\n3.19 gopher查询应用实例\r\n3.20 Finger查询应用实例\r\n3.21 Whois查询应用实例\r\n3.22 使用WinInet访问加密协议\r\n3.23 在使用Internet后挂断线路\r\n\r\n第四章 Internet ServerAPI(ISAPI)\r\n\r\n4.1 什么是ISAPI\r\n4.2 什么是Internet服务器扩展\r\n4.3 什么是ISAPI过滤器\r\n4.4 ISAPI与CGI的比较\r\n4.5 ISAPI的工作原理\r\n4.6 需要什么样的HTTP服务器来运行ISAPI\r\n4.7 ISAPI如何使创建Internet服务器应用程序变得更容易\r\n4.8 使用MFC创建Internet服务器应用程序的优点\r\n4.9 用ISAPI可以执行哪些操作\r\n4.10 MFC支持ISAPI的类和函数\r\n4.11 MFC的支持\r\n4.12 创建典型的ISAPI扩展\r\n4.13 创建典型的ISAPI过滤器\r\n4.14 ISAPI编程提示\r\n4.15 服务器扩展(ISA)内存管理\r\n4.16 过滤器内存管理\r\n4.17 调试ISA\r\n4.18 生成基于MFC的ISAPI DLL\r\n4.19 应在何时将ISAPI用于数据库\r\n4.20 安装和升级ISA\r\n4.21 安装ISAPI过滤器\r\n4.22 使用ISAPI过滤器实现虚拟主机WWW站点\r\n4.23 使用ISAPI过滤器实现访问内容进行统计分析\r\n4.24 实现CGI到ISAPI的转换\r\n4.25 使用MFC开发ISA扩展应用程序\r\n4.26 用MFC实现基于Web的计算器\r\n4.27 用ISAPI实现对Web数据库的访问\r\n4.28 用ISAPI过滤器限定访问的IP\r\n\r\n第五章 Telephony API(TAPI)\r\n\r\n5.1 什么是Windows开放服务结构(WOSA)\r\n5.2 什么是TAPI\r\n5.3 什么是TSP\r\n5.4 Unimodem和Unimodem/V\r\n5.5 电话设备和TAPI\r\n5.6 什么是服务器TAPI模型\r\n5.7 TAPI的标准有哪些\r\n5.8 TAPI的服务\r\n5.9 TAPI通信过程\r\n5.10 异步TAPI函数的使用\r\n5.11 增补电话TAPI\r\n5.12 扩展电话TAPI\r\n5.13 TAPI3.0概念\r\n5.14 TAPI3.0的四个组件\r\n5.15 TAPI3.0的呼叫控制模型\r\n5.16 得到LINEERR OPERATIONUNAVAIL\r\n5.17 往外打出时为什么在电话接通前得到一个LINECALLSTATE CONNECTED消息\r\n5.18 为什么不能检测对方挂机\r\n5.19 怎样用TAPI收发传真\r\n5.20 用TAPI实现电话拨号程序\r\n5.21 如何实现拨号上网\r\n\r\n第六章 Messaging API(MAPI)\r\n\r\n6.1 什么是MAPI\r\n6.2 MAPI的体系结构\r\n6.3 安装MAPI\r\n6.4 什么是简化MAPI\r\n6.5 什么是扩展MAPI\r\n6.6 MFC中的MAPI支持\r\n6.7 用MFC实现“发送邮件”命令\r\n6.8 在API层次上实现MAPI编程\r\n6.9 初始化MAPI并登录到电子邮件对象\r\n6.10 阅读电子邮件\r\n6.11 发送电子邮件\r\n6.12 什么是通用消息调用(CMC)\r\n6.13 如何开始CMC对话\r\n6.14 用CMC发送消息\r\n6.15 用CMC分辨消息的地址\r\n6.16 用CMC接收消息\r\n6.17 使用CMC扩展\r\n6.18 用API编写的一个完整的邮件发送程序\r\n\r\n第七章 CryptoAPI(CAPI)\r\n\r\n7.1 加密101\r\n7.2 密码认证的控制措施\r\n7.3 电子商务中的安全交易手段\r\n7.4 CryptoAPI的体系结构\r\n7.5 CryptoAPI的配置\r\n7.6 与服务提供程序连接\r\n7.7 生成密钥\r\n7.8 输入/输出密钥\r\n7.9 简单数据加密\r\n7.10 多块数据(文件)加密\r\n7.11 加密时进行散列编码\r\n7.12 数据解密\r\n7.13 数字签名\r\n7.14 加密/解密文件\r\n\r\n第八章 ActiveX及ActiveX模板库(ATL)\r\n\r\n8.1 什么是ActiveX\r\n8.2 ActiveX控件\r\n8.3 ActiveX是否只是OLE的一个新名字\r\n8.4 ActiveX是否与Java竞争\r\n8.5 ActiveX控件与Netscape Plug—Ins的区别\r\n8.6 ActiveX控件与JavaApplet的优劣\r\n8.7 哪种平台可运行ActiveX\r\n8.8 ActiveX与Internet\r\n8.9 ActiveX如何解决Internet安全性问题\r\n8.10 ActiveX的安全性讨论\r\n8.11 设置IE中的安全级别来启动与禁用ActiveX控件\r\n8.12 ActiveX控件下载后,放在什么位置\r\n8.13 压缩和打包ActiveX控件\r\n8.14 在Web页中嵌入ActiveX控件\r\n8.15 开发ActiveX控件的几点要求\r\n8.16 MFC ActiveX控件向导中的控件设置\r\n8.17 测试ActiveX控件\r\n8.18 调试Activex控件\r\n8.19 在应用程序中加入ActiveX控件\r\n8.20 什么是ATL\r\n8.21 ATL的基本技术\r\n8.22 为什么要用ATL\r\n8.23 模板库与标准C++库有什么不同\r\n8.24 哪些ATL类便于ActiveX控件包容\r\n8.25 什么是ATL控件宿主API\r\n8.26 向MFC项目添加ATL支持\r\n8.27 调试ATL对象\r\n8.28 什么是AtlAxWin7\r\n8.29 在运行时加载指定的控件\r\n8.30 加载在对话框资源上指定的控件\r\n8.31 加载授权的控件\r\n8.32 处理授权的控件\r\n8.33 何时需要调用AtlAx WinInit()函数\r\n8.34 什么是宿主对象\r\n8.35 可以在单个窗口中承载多个控件吗\r\n8.36 可以重用宿主窗口吗\r\n8.37 调整控件大小\r\n8.38 获取指向控件的接口指针\r\n8.39 为控件设置环境属性\r\n8.40 销毁控件\r\n8.41 何时需要调用AtlAx WinTerm()函数\r\n8.42 用ATL开发ActiveX控件\r\n\r\n第九章 Microsoft.NET和Visual Studio.NET下的网络编程\r\n\r\n9.1 Microsoft.NET的定义\r\n9.2 .NET的核心架构\r\n9.3 .NET是运行库还是开发平台\r\n9.4 为什么要使用.NET\r\n9.5.NET类的设计目标\r\n9.6 使用.NET类\r\n9.7 什么是XML\r\n9.8 什么是SOAP\r\n9.9 ATL和COM在.NET中会扮演怎样的角色\r\n9.10 可以在.NET框架程序中使用COM对象吗\r\n9.11 可以在COM程序中使用.NET框架组件吗\r\n9.12 Microsoft.NET与Java\r\n9.13 什么是C#语言\r\n9.14 C#能开发什么\r\n9.15 C#与C++相比有什么新特性\r\n9.16 为什么要用C#进行开发\r\n9.17 在C#程序中调用Win32 API\r\n9.18 用C+开发简单的Windows应用程序\r\n9.19 用C+得到本机的IP地址\r\n9.20 用C#发送邮件\r\n9.21 在C#程序中下载网页\r\n\r\n第十章 网络编程实例:收发电子邮件\r\n\r\n10.1 基于Windows Sockets实现SMTP\r\n10.2 基于Windows Sockets实现POP3
Visual C++.NET是Microsoft公司2001年中期推出的最新一代可视化开发工具,是Visual Studio.NET中的组成部分,因版本延续及称呼方便之故,Visual C++.NET又被称为Visual C++7.0。利用Visual C++.NET,用户可以开发出企业规模的Web应用程序,以及高性能的桌面应用程序。
Visual C++.NET具有开发过程简明、开发方式灵活、扩展性强等特点,是一种被广泛使用的前端开发平台。Visual C++.NET提供了多种多样的网络编程技术,例如Winsock、WinInet、ActiveX、DCOM、ATL等,为用户开发网络应用程序提供全方位的支持。
能够得心应手地运用Visual C++进行网络开发是广大程序员的愿望,本书的目的是希望读者能够在较短的时间内较好地掌握并运用Visual C++进行网络应用开发,我们通过自己在开发软件和教学过程中所得到的经验和教训,总结出了通过编程案例、编程技巧进行学习的一种高效的方法。通过编程案例、编程技巧,可以使我们更加清楚地感受到一种语言或一类开发者们最初的意图,用户只有真正了解一种语言的意图所在,使用它们时才不至于感到迷茫,才能真正达到随心所欲使用的地步。
本书的主要特色是采用了编程案例、编程技巧的常见问题解答的形式来编写,着重讨论了在Visual C++网络编程中可能遇到的典型问题、疑难问题和编程技巧。利用大量生动有趣的编程案例、编程技巧从解决问题和答疑解惑入手,以因特网上最新资料为蓝本,以简洁明快的语言、清晰直观的条理,比较全面地对Visual C++网络编程过程中常见问题及故障给予了具体解决办法和答案。在解答常用问题的同时向读者介绍可视化编程的技术和软件开发的思维方式,以便读者能够从中领悟到一些深层次的、无法用文字表述的编程技巧;并使读者对其有一个完整的感性认识和美好印象,从而通过本书中的编程范例、编程技巧轻松地领会和了解Visual C++.NET。大部分编程案例、编程技巧是一般介绍Visual C++网络编程的书籍没有涉及的。每个问题的范例程序都涉及到Visual C++.NET网络编程的各个方面的内容并经过调试。为了帮助读者更好地理解,我们将自动生成的代码和手工增加的代码用不同字体加以区别(程序中必须使用手工添加的代码以斜体表示)。这些范例大多是作者的实践结果,有些是我们科研课题的实例,是针对程序员在开发过程中最迫切需要、使用频率最高的内容特意制定的,读者可以轻而易举地重新实现,读者还可以对这些范例进行研究、修改和扩展,使其符合自己的要求。
本书的另一个特点是不同于一般的Visual C++网络编程参考书,在解答常见问题的同时,向读者介绍网络编程的基本概念、编程技巧和开发方法,系统剖析了Visual C++的各类知识,且不需要花费大量的时间系统学习,可以跳跃阅读,各种类型的读者均可通过阅读,从中发现对自己有用的内容。
本书由万跃华主编,浙江工业大学万跃华、胥芳、张宪、赵章风编著,吴翌、郑科、方喆也参加了部分编写及程序调试工作。全书由万跃华策划,万跃华、胥芳负责修改、整理和定稿。本书由浙江工业大学计时鸣博士主审。
在本书编写的过程中,我们得到了单位领导和许多同仁以及网友的大力支持和帮助,并承蒙他们提出了很多宝贵意见和建议,有些内容是受到他们的启发才编入此书的,在此深表谢意。感谢香港城市大学陈胜勇博士,浙江工业大学的王忠飞、姚春燕等老师,王杭亮等同学提供了许多资料并对本书提出了许多中肯的修改意见。没有他们的支持和通力合作,本书就不可能与读者见面。
在本书编写过程中,我们曾参阅了国内外多种同类教材和教学参考书,以及国内外Visual C++网站、VC讨论组、VC新闻组、VC邮件列表、VC专业杂志、VC电子期刊等,所涉及的内容非常丰富、广泛。鉴于作者水平有限,书内谬误和疏漏之处在所难免,敬请读者批评指正。
万跃华
2002年5月于杭州