第1章 计算机网络基础 1
1.1 计算机网络的分类 1
1.2 计算机网络体系结构 4
1.3 OSI参考模型 6
1.4 TCP/IP参考模型 8
1.5 网络实例 10
1.5.1 Novell NetWare 10
1.5.2 ARPANET 11
1.5.3 NSFNET 12
1.5.4 因特网 12
1.5.5 吉比特实验台 13
1.6 数据通信服务实例 13
1.6.1 SMDS 13
1.6.2 X.25 14
1.6.3 帧中断 14
1.6.3 宽带ISDN和ATM 15
1.7 小节 16
第2章 Windows套接字 17
2.1 什么是套接字 17
2.1.1 数据报套接字 18
2.1.2 流式套接字 18
2.2 什么时候使用套接字 18
2.3 套接字规范 19
2.3.1 Bekerly套接字规范 19
2.3.2 Windows套接字规范 19
2.3.3 Windows套接字和Berkeley套接字的比较 20
2.3.4 Windows套接字规范的地位 21
2.4 Windows套接字规范的沿革 22
2.4.1 Windows Sockets1.0 22
2.4.2 Windows Sockets1.1 22
2.5 小结 23
2.4.3 Windows Sockets2.0 23
第3章 套按字的使用和Winsock API 25
3.1 使用Winsock API 25
3.1.1 初始化Winsock 25
3.1.2 创建套按字 26
3.2 使用数据报套接字 27
3.2.1 地址绑定 28
3.2.2 字节顺序转换 31
3.2.3 从数据报套接字接收数据 31
3.2.4 向数据报套接字发送数据 32
3.3 使用流式套接字 33
3.3.1 流式套接字的服务器 33
3.3.2 服务器侦听连接 34
3.3.3 服务器接受连接 34
3.3.4 客户机请求连接 36
3.3.5 发送和接收数据 37
3.4 异步数据接收 38
3.4.1 使用BSD类型的函数 38
3.4.2 使用WinSock的专用函数 39
3.4.3 关闭套接字 40
3.5 Windows sockets 2.0的新特性 41
3.5.1 WinSock 2的新函数 41
3.5.2 使用多种协议和多协议名分辨 42
3.5.3 重叠I/O和分散/聚集I/O 46
3.5.4 服务质量和套接字组 47
3.5.5 多点套接字和共享的套接字 48
3.5.6 扩展的连接操作 49
3.5.7 具体协议扩展 49
3.6 小结 49
4.1 使用WinInet API 51
4.1.1 HINTERNET句柄 51
第4章 WinInet API 51
4.1.2 获取错误信息 52
4.1.3 设置缓冲区参数 52
4.1.4 异步I/O 52
4.2 普通Internet函数 53
4.2.1 创建WinInet对话 53
4.2.2 设置HINTERNET句柄选项 54
4.2.3 查询HINTERNET句柄选项 55
4.2.4 和Internet建立连接 55
4.2.5 连接Internet服务器 55
4.2.6 回调函数 57
4.2.7 与URL相关的操作 58
4.2.8 打开URL上的文件 59
4.2.9 查询数据可用性 59
4.2.11 移动文件指针 60
4.2.10 读取数据 60
4.2.12 向Internet文件写数据 61
4.3 FTP客户机函数 61
4.3.1 获取FTP服务器的当前目录 62
4.3.2 创建和更换目录 62
4.3.3 查找文件 63
4.3.4 下载文件 64
4.3.5 上传文件 64
4.3.6 在FTP服务器上打开一个文件 65
4.3.7 其他FTP文件操作 66
4.4 HTTP客户函数 66
4.4.1 HTTP请求 66
4.4.2 对HttpSendRequest()调用错误的处理 69
4.4.3 获取服务器的响应信息 70
4.4.4 使用Cookie Jar 72
4.4.5 高速缓存的使用 73
4.6 小结 74
4.5 Gopher客户机函数 74
第5章 MFC WinSock类及应用 75
5.1 CAsyncSocket类 75
5.1.1 创建CAsyncSocket对象 76
5.1.2 CAsyncSocket对象的错误处理 77
5.1.3 套接字选项和CAsyncSocket 77
5.1.4 发送和接收数据报 77
5.1.5 套接字与服务器连接 77
5.1.6 服务器接受客户机的连接 78
5.1.7 发送并接收流式数据 79
5.1.8 关闭套接字 80
5.2 CSocket类 80
5.2.1 创建CSocket对象 81
5.2.2 建立连接 81
5.2.3 发送并接收数据 81
5.2.4 与CSocket一起使用CSocketFile类和CArchive类 82
5.2.5 关闭套接字和清除相关对象 83
5.3 Socket类的编程模型 83
5.4 应用程序使用说明 85
5.4.1 计算机网络硬件 85
5.4.2 对Windows进行网络配置 85
5.4.3 只有一台计算机的Internet——TCP/IP环形地址 87
5.5 实例分析——CAsyncSocket类的应用 87
5.5.1 实现目标 87
5.5.2 技术要点 87
5.5.3 创建过程 88
5.5.4 技术小结 104
5.6 实例分析——聊天室的服务端 107
5.6.1 实现目标 107
5.6.2 技术要点 107
5.6.3 创建过程 107
5.6.4 技术小结 133
5.7.1 实现目标 135
5.7.2 技术要点 135
5.7 实例分析——聊天室的客户端 135
5.7.3 创建过程 136
5.7.4 技术小结 156
5.8 小结 156
第6章 MFC类及应用 159
6.2 MFC WinInet类 160
6.2.1 CInternetSession类 161
6.2.2 连接类 162
6.2.3 文件类 163
6.2.4 CInternetException类 164
6.3 MFC WinInet类的关系 165
6.4 使用CInternetSession 165
6.5 FTP服务器处理 169
6.6 HTTP服务器处理 173
6.7 Gopher服务器处理 177
6.8 实例分析——实现Internet查询 179
6.8.2 技术要点 180
6.8.3 创建过程 180
6.8.1 实现目标 180
6.8.4 技术小结 192
6.9 实例分析——FTP应用程序 193
6.9.1 实现目标 193
6.9.2 技术要点 194
6.9.3 创建过程 194
6.10 小结 208
第7章 为程序添加Web浏览功能 209
7.1 Internet Explorer ActiveX模型 209
7.2 MFC CHtmlView类 210
7.2.1 Web定位 210
7.2.2 控制浏览器 212
7.2.3 获取浏览器状态 212
7.3 实例分析——Web浏览器 213
7.3.1 实现目标 213
7.3.2 技术要点 213
7.3.3 创建过程 213
7.3.7 技术小结 220
7.4 小结 221
第8章 WinSock高级编程 223
8.1 Web基础知识 223
8.1.1 客户端 224
8.1.2 服务器 226
8.1.3 HTTP协议 229
8.2 HTTP服务器设计 231
8.2.1 同步操作 231
8.2.2 对错误的异常处理 232
8.2.3 发送和接收数据的超时处理 232
8.3 创建自己的WinSock类 233
8.3.1 CSockAddress辅助类 233
8.3.2 CMyBlockSocketException类 235
8.3.3 CMyBlockSocket类 236
8.3.4 CMyHttpBlockSocket类 242
8.4 实例分析——HTTP服务器 244
8.4.1 实现目标 245
8.4.2 技术要点 245
8.4.3 创建过程 247
8.4.4 技术小结 261
8.5 小结 261
第9章 信报API 263
9.1 MAPI结构 263
9.1.2 服务提供程序 264
9.1.3 MAPI假脱机程序 264
9.1.1 客户应用程序 264
9.1.4 MAPI分类 265
9.1.5 MAPI接口的可用性 265
9.2 在MFC中支持MAPI 266
9.3 通用信报调用 268
9.3.1 开始对话 268
9.3.2 用CMC发送信报 271
9.3.3 用CMC分辨信报的地址 273
9.3.4 用CMC接收信报 274
9.3.5 CMC数据扩展 275
9.4 简单MAPI 277
9.5 扩展MAPI 277
9.6 OLE信报库 278
9.7 小结 278
第10章 Internet Server API 279
10.1 开发服务器扩展应用程序 279
10.1.1 ISA入口 280
10.1.2 扩展控制块(ECB) 281
10.1.3 文件发送 286
10.1.4 异步操作 287
10.1.6 ISA异常处理 289
10.1.7 调试ISA 289
10.1.5 写服务器日志 289
10.2 ISAPI过滤程序 290
10.2.1 安装过滤镜器程序 290
10.1.8 从CGI到ISAPI的转换 290
10.2.2 ISAPI过滤程序结构 291
10.2.3 HTTP_FILTER_CONTEXT结构 293
10.2.4 过滤程序通知处理 296
10.3 MFC对ISAPI的支持 299
10.3.1 用AppWizard创建ISAPI DLL 299
10.3.2 分析程序映射 300
10.3.3 处理函数 301
10.3.4 MFC ISAPI类 302
10.4 实例分析——ISAPI服务器扩展 304
10.4.1 实现目标 304
10.4.2 技术要点 305
10.4.3 创建过程 308
10.4.4 技术小结 315
10.5 小结 315
11.1 多线程的应用程序 317
11.1.1 MFC对象和线程 317
第11章 多线程技术与网络编程 317
11.1.2 线程的类型 318
11.2 工作线程 318
11.2.1 创建工作线程 319
11.2.2 编写线程函数 320
11.2.3 访问线程的返回码 321
11.3 用户界面线程 322
11.3.1 创建线程 322
11.3.2 创建线程类 323
11.3.3 在线程中处理消息 323
11.3.4 终止线程 324
11.4 线程同步 324
11.4.1 潜在错误 325
11.4.2 发送事件 327
11.5 实例分析——多线程的FTP应用程序 330
11.5.2 技术要点 331
11.5.3 创建过程 331
11.5.1 实现目标 331
11.5.4 技术小结 341
11.6 小结 342
6.1 WinInet相对Winsock的优势 1159