第一章 网络编程基础 1
1.1 网络拓扑结构 1
1.2 以太网技术 3
1.3 其他高速网络技术 4
1.4 光以太网的现状及展望 6
1.5 Internet整体结构 10
1.6 网络分层模型 11
1.7 TCP/IP协议 14
1.8 网络进程通信原理 21
第二章 Windows Sockets(WinSocket) 23
2.1 Socket的由来 23
2.2 Windows Sockets规范 23
2.3 Windows Sockets中一些重要概念 24
2.4 基于Windows Sockets网络编程 27
2.5 Windows Socket API函数 27
2.6 Windows Sockets与UNIX Sockets连接编程 30
2.7 利用MFC的Windows Sockets类进行网络编程 33
2.8 异步Windows Sockets编程 33
2.9 使用CAsyncSocket类编程 34
2.10 使用CSocket类编程 37
2.11 用CSocket实现无连接通信 44
2.12 CAsyncSocket和CSocket编程的比较 47
2.13 用自己派生的Socket类进行网络通信 47
2.14 在服务器端控制Socket通信的客户端数目 52
2.15 一个WinSock程序中同时可以打开多少个Socket连接 52
2.17 在Windows Socket程序中得到本机的IP地址 53
2.16 为服务器设置一个合理的端口号 53
2.18 原始套接字 56
2.19 Ping命令简介 56
2.20 Internet控制信息协议(ICMP) 57
2.21 用Windows Sockets实现Ping命令 58
2.22 用Windows Sockets实现HTTP 63
2.23 用Windows Sockets实现FTP 65
2.24 Windows Sockets 1.1与Windows Sockets 2的区别 70
2.25 截获Windows Sockets 73
2.26 将Sockets程序从UNIX移植到Windows 74
2.27 建立客户CSocket 76
2.28 利用“监听-转发”程序破译网管协议 76
2.29 穿透代理服务器编程 82
3.2 WinInet如何使创建Internet客户端应用程序更容易 88
第三章 Win32 Internet(WinInet) 88
3.1 什么是WinInet 88
3.3 MFC如何使创建Internet客户端应用程序更容易 89
3.4 用MFC WinInet类编写Internet客户端应用程序 90
3.5 用MFC建立通用的Internet客户端连接 91
3.6 用MFC编写HTTP客户端应用 94
3.7 用MFC实现FTP客户端应用 96
3.8 用MFC编写gopher客户端应用 98
3.9 下载Web页 101
3.10 FTP文件 102
3.11 检索Gopher目录 102
3.12 使用OnStatusCallback 103
3.13 传输文件时显示进度信息 103
3.14 利用Win32网络函数创建一个网络浏览器 104
3.15 用Win32网络函数编写HTTP网络浏览器 107
3.16 用WinInet实现HTTP的POST方法 112
3.17 HTTP查询应用实例 113
3.18 FTP查询应用实例 117
3.19 gopher查询应用实例 119
3.20 Finger查询应用实例 121
3.21 Whois查询应用实例 123
3.22 使用WinInet访问加密协议 126
3.23 在使用Internet后挂断线路 126
第四章 Internet Server API(ISAPI) 128
4.1 什么是ISAPI 128
4.2 什么是Internet服务器扩展 128
4.3 什么是ISAPI过滤器 133
4.4 ISAPI与CGI的比较 138
4.5 ISAPI的工作原理 139
4.6 需要什么样的HTTP服务器来运行ISAPI 140
4.7 ISAPI如何使创建Internet服务器应用程序变得更容易 140
4.8 使用MFC创建Internet服务器应用程序的优点 141
4.9 用ISAPI可以执行哪些操作 141
4.10 MFC支持ISAPI的类和函数 142
4.11 MFC的支持 144
4.12 创建典型的ISAPI扩展 146
4.13 创建典型的ISAPI过滤器 146
4.14 ISAPI编程提示 147
4.15 服务器扩展(ISA)内存管理 147
4.17 调试ISA 148
4.16 过滤器内存管理 148
4.18 生成基于MFC的ISAPI DLL 149
4.19 应在何时将ISAPI用于数据库 149
4.20 安装和升级ISA 150
4.21 安装ISAPI过滤器 150
4.22 使用ISAPI过滤器实现虚拟主机WWW站点 150
4.23 使用ISAPI过滤器实现访问内容进行统计分析 152
4.24 实现CGI到ISAPI的转换 154
4.25 使用MFC开发ISA扩展应用程序 155
4.26 用MFC实现基于Web的计算器 158
4.27 用ISAPI实现对Web数据库的访问 160
4.28 用ISAPI过滤器限定访问的IP 167
5.2 什么是TAPI 174
5.1 什么是Windows开放服务结构(WOSA) 174
第五章 Telephony API(TAPI) 174
5.3 什么是TSP 175
5.4 Unimodem和Unimodem/V 175
5.5 电话设备和TAPI 175
5.6 什么是服务器TAPI模型 176
5.7 TAPI的标准有哪些 176
5.8 TAPI的服务 176
5.9 TAPI通信过程 177
5.10 异步TAPI函数的使用 185
5.11 增补电话TAPI 187
5.12 扩展电话TAPI 190
5.13 TAPI 3.0概念 190
5.14 TAPI 3.0的四个组件 192
5.16 得到LINEERR_OPERATIONUNAVAIL 193
5.15 TAPI 3.0的呼叫控制模型 193
5.17 往外打出时为什么在电话接通前得到一个LINECALLSTATE_CONNECTED消息 194
5.18 为什么不能检测对方挂机 194
5.19 怎样用TAPI 收发传真 195
5.20 用TAPI实现电话拨号程序 206
5.21 如何实现拨号上网 215
第六章 Messaging API(MAPI) 225
6.1 什么是MAPI 225
6.2 MAPI的体系结构 225
6.3 安装MAPI 227
6.4 什么是简化MAPI 228
6.5 什么是扩展MAPI 230
6.7 用MFC实现“发送邮件”命令 231
6.6 MFC中的MAPI支持 231
6.8 在API层次上实现MAPI编程 233
6.9 初始化MAPI并登录到电子邮件对象 233
6.10 阅读电子邮件 236
6.11 发送电子邮件 239
6.12 什么是通用消息调用(CMC) 242
6.13 如何开始CMC对话 243
6.14 用CMC发送消息 245
6.15 用CMC分辨消息的地址 248
6.16 用CMC接收消息 249
6.17 使用CMC扩展 252
6.18 用API编写的一个完整的邮件发送程序 253
第七章 CryptoAPI(CAPI) 262
7.1 加密101 262
7.2 密码认证的控制措施 264
7.3 电子商务中的安全交易手段 265
7.4 CryptoAPI的体系结构 267
7.5 CryptoAPI的配置 267
7.6 与服务提供程序连接 268
7.7 生成密钥 269
7.8 输入/输出密钥 273
7.9 简单数据加密 276
7.10 多块数据(文件)加密 278
7.11 加密时进行散列编码 278
7.12 数据解密 279
7.13 数字签名 280
7.14 加密/解密文件 287
8.2 ActiveX控件 301
第八章 ActiveX ActiveX模板库(ATL) 301
8.1 什么是ActiveX 301
8.3 ActiveX是否只是OLE的一个新名字 304
8.4 ActiveX是否与Java竞争 304
8.5 ActiveX控件与Netscape Plug-Ins的区别 304
8.6 ActiveX控件与Java Applet的优劣 305
8.7 哪种平台可运行ActiveX 306
8.8 ActiveX与Internet 306
8.9 ActiveX如何解决Internet安全性问题 308
8.10 ActiveX的安全性讨论 308
8.11 设置IE中的安全级别来启动与禁用ActiveX控件 309
8.12 ActiveX控件下载后,放在什么位置 309
8.13 压缩和打包ActiveX控件 309
8.14 在Web页中嵌入 ActiveX控件 310
8.15 开发ActiveX控件的几点要求 313
8.16 MFCActiveX控件向导中的控件设置 313
8.17 测试ActiveX控件 314
8.18 调试ActiveX控件 315
8.19 在应用程序中加入ActiveX控件 316
8.20 什么是ATL 319
8.21 ATL的基本技术 319
8.22 为什么要用ATL 320
8.23 模板库与标准C++库有什么不同 322
8.24 哪些ATL类便于ActiveX控件包容 322
8.25 什么是ATL控件宿主API 322
8.27 调试ATL对象 323
8.26 向MFC项目添加ATL支持 323
8.28 什么是AtlAxWin7 324
8.29 在运行时加载指定的控件 324
8.30 加载在对话框资源上指定的控件 325
8.31 加载授权的控件 325
8.32 处理授权的控件 325
8.33 何时需要调用AtlAxWinInit()函数 326
8.34 什么是宿主对象 326
8.35 可以在单个窗口中承载多个控件吗 326
8.36 可以重用宿主窗口吗 326
8.37 调整控件大小 326
8.38 获取指向控件的接口指针 326
8.42 用ATL开发ActiveX控件 327
8.41 何时需要调用AtlAxWinTerm()函数 327
8.39 为控件设置环境属性 327
8.40 销毁控件 327
第九章 Microsoft.NET和Visual Studio.NET下的网络编程 341
9.1 Microsoft.NET的定义 341
9.2 .NET的核心架构 341
9.3 .NET是运行库还是开发平台 341
9.4 为什么要使用.NET 342
9.5 .NET类的设计目标 344
9.6 使用.NET类 344
9.7 什么是XML 349
9.10 可以在.NET框架程序中使用COM对象吗 350
9.11 可以在COM程序中使用.NET框架组件吗 350
9.9 ATL和COM在.NET中会扮演怎样的角色 350
9.8 什么是SOAP 350
9.12 Microsoft.NET与Java 351
9.13 什么是C#语言 351
9.14 C#能开发什么 352
9.15 C#与C++相比有什么新特性 352
9.16 为什么要用C#进行开发 353
9.17 在C#程序中调用Win32 API 354
9.18 用C#开发简单的Windows应用程序 355
9.19 用C#得到本机的IP地址 356
9.20 用C#发送邮件 357
9.21 在C#程序中下载网页 359
第十章 网络编程实例:收发电子邮件 360
10.1 基于Windows Sockets实现SMTP 360
10.2 基于Windows Sockets实现POP3 385