前言页 1
第一章 TCP/IP协议 1
1.1 TCP/IP协议簇简介 1
1.1.1 TCP/IP结构 1
1.1.2 常用协议 3
1.1.3 RFC和标准简单服务 3
1.2 TCP/IP基本概念 4
1.2.1 IP地址 4
1.2.2 地址解析 5
1.2.3 域名系统 7
1.2.4 数据包的封装和分用 7
1.2.5 IP数据报 8
1.2.6 UDP数据报 11
1.2.7 TCP数据报 12
1.2.8 端口号 17
第二章 Winsock网络编程接口 19
2.1 Winsock概述 19
2.1.1 套接字(Sockets) 19
2.1.2 基本概念 20
2.1.3 Winsock编程原理 21
2.2 一个简单的例子 28
2.2.1 服务器程序的实现 29
2.2.2 客户程序的实现 31
2.3 WinsockI/O模型 33
2.3.1 select模型 34
2.3.2 WSAAsyncSelect模型 35
2.3.3 WSAEventSelect模型 36
2.4 Winsock2的扩展特性 38
2.4.1 原始套接字 38
2.4.2 重叠I/O模型 39
2.4.3 服务的质量(QOS) 40
2.5 套接字选项和I/O控制命令 41
2.5.1 套接字选项 41
2.5.2 I/O控制命令 43
3.1.1 MFC WinInet类 45
3.1 WinInet编程 45
第三章 Visual C++与网络编程 45
3.1.2 HTTP客户实例 57
3.1.3 利用WinInet API进行编程 61
3.2 MFC Windows Sockets类 69
3.2.1 创建聊天客户 70
3.2.2 创建聊天客户 74
3.3 一个很酷的例子--在线聊天室 78
3.3.1 创建聊天客户 78
3.3.2 创建聊天服务器 93
3.4 多媒体与网络编程 100
3.4.1 窄带流传输的现状 100
3.4.2 宽带多媒体流的发展趋势 102
3.4.3 音频流的获取与处理 105
3.4.5 视频流的获取与压缩 109
3.4.4 音频压缩 109
3.5 多线程编程 111
3.5.1 Win32基础上的多线程编程 112
3.5.2 基于MFC的多线程编程 115
第四章 基本网络编程技术 117
4.1 获取网络配置信息 117
4.1.1 获得主机名和IP地址 117
4.1.2 获取域名、子网掩码、网卡类型等信息 119
4.1.3 获取网卡的MAC地址 125
4.1.4 一个综合的例子 128
4.2.1 Win32支持的协议 132
4.2 获取系统支持的网络协议信息 132
4.2.2 Winsock2的WSAEnumProtocols函数 133
4.2.3 获取系统支持的网络协议信息实例 134
第五章 Telnet协议的实现 145
5.1 Telnet协议 146
5.1.1 Telnet的运行方式 146
5.1.2 网络虚拟终端NVT 146
5.1.3 Telnet命令 147
5.1.4 选项协商机制 148
5.1.5 子选项协商 149
5.1.6 同步信号 149
5.2 Telnet客户实例 150
5.1.7 客户的转义符 150
6.1 HTTP协议 165
6.1.1 HTTP协议的特点 165
6.1.2 HTTP协议的动作方式 165
第六章 HTTP协议的实现 165
6.1.3 HTTP通信实例 168
6.2 多线程HTTP服务器实例 169
6.2.1 封装CRequest类 170
6.2.2 CListenSocket和CRequestSocket类 171
6.2.3 支持CGI 185
6.2.4 程序的组织 192
6.3 HTTP客户程序的实现 198
7.1 FTP协议 207
第七章 FTP协议的实现 207
7.1.1 数据表示与保存 208
7.1.2 数据连接的建立 210
7.1.3 FTP命令 211
7.1.4 FTP应答 214
7.2 利用Winsock类实现FTP客户 214
7.2.1 封装FtpClient类 215
7.2.2 程序的组织和界面 225
7.3 利用WinInet实现完整的FTP客户实例 229
7.3.1 界面的编写 230
7.3.2 进行实际操作的类--CMyAppThread 245
7.3.3 程序的组织和界面 253
第八章 文件下载 254
8.1 一个类似网络蚂蚁的实例 254
8.1.1 实现拖放界面 254
8.1.2 程序的组织 258
8.1.3 封装CHTTPDownload类 263
8.1.4 断点续传的支持 272
8.2 异步Moniker文件 272
8.2.1 Moniker 272
8.2.2 MFC CAsyncMoniker类 273
8.2.3 使用CAsyncMoniker类 273
9.1.1 局域网广播(Broadcast) 274
9.1 网络广播 274
第九章 UDP协议的实现 274
9.1.2 多播通信(MultiCast) 276
9.1.3 IP多播的Socket实现 281
9.2 利用Winslck2实现IP多播的实例 283
9.2.1 封装多播类CMultiCast 284
9.2.2 程序的组织 288
9.3 利用UDP实现语音全双工通信 289
9.3.1 通信过程 290
9.3.2 音频压缩 294
9.3.3 音频的采集和回放 305
10.1.1 ICMP报文格式 313
10.1 ICMP协议 313
第十章 ICMP协议的实现 313
10.1.2 回显请求和回显应答报文 315
10.1.3 ICMP地址掩码请求与应答 315
10.1.4 ICMP时间戳请求与应答 316
10.2 Ping程序的实现 316
10.2.1 Ping程序的编程原理及步骤 316
10.2.2 ICMP报文的定义和初始化 317
10.2.3 封装CPing类 318
10.2.4 组织程序 325
10.3 TraceRoute程序 326
10.3.1 Traceroute编程的原理及实现方法 326
10.3.2 TraceRoute实例 327
第十一章 PPP协议的实现 332
11.1 PPP协议 332
11.1.1 基本概念 332
11.1.2 PPP数据帧格式 333
11.1.3 PPP链路操作过程 334
11.2 RAS编程 335
11.2.1 RAS通用对话框 335
11.2.2 建立和断开RAS连接 338
11.2.3 管理连接 343
11.2.4 RAS拨号实例 345
11.3 TAPI编程接口 349
11.3.1 CTI应用程序接口 349
11.3.2 TAPI3.0特性 350
11.3.3 TAPI3.0结构 351
11.3.4 TAPI3.0接口 352
第十二章 代理服务器的实现 353
12.1 Socket5协议 353
12.2 HTTP代理服务器实例 356
12.2.1 封装CProxyServer类 356
12.2.2 使用CProxyServer类 366
12.3 一个支持Socket5代理的类 367
12.3.1 封装CProxySocket类 367
12.3.2 使用CProxySocket类 373
12.3.3 支持UDP的CAsyncProxySocket类 374
13.1 ATL技术 377
第十三章 ATL、DCOM和ActiveX技术 377
13.1.1 ATL与C++模板类 379
13.1.2 多重继承 379
13.1.3 自动化和双重接口 380
13.1.4 ATL的体系结构 380
13.1.5 利用ATL开发进程内COM服务器 382
13.2 DCOM 386
13.2.1 DCOM的结构 387
13.2.2 DCOM特性 387
13.2.3 DCOM安全性 390
13.3 DCOM实例--白板程序 391
13.3.1 DCOM服务器的实现 391
13.3.2 DCOM客户的实现 393
13.3.3 程序的运行 400
13.4 ActiveX控制 401
13.4.1 ActiveX控制基本结构 401
13.4.2 利用ATL创建ActiveX控件 403
13.5 ActiveX文档服务器 408
13.5.1 ActiveX文档特性 409
13.5.2 ActiveX文档结构模型 410
13.5.3 ActiveX文档服务程序的实现 410
13.5.4 ActiveX文档服务程序实例 411
第十四章 网络安全 413
14.1 数据加密和数字签名 413
14.1.1 数据加密技术 414
14.1.2 数字签名技术 416
14.1.3 数字时间戳技术 418
14.2 网络层的安全性 418
14.2.1 IP安全协议(IPSP) 419
14.2.2 密钥管理协议(IKMP) 419
14.3 传输层的安全 420
14.4 应用层的安全 421
14.4.1 修改应用层协议 421
14.4.2 SSH认证和密钥分配系统 422
附录1 RFC文档分类 423
附录2 Winsock2扩展函数参考 430
附录3 Windows Sockets错误码 443