第1章 网络编程基础 1
1.1 网络编程相关的基本概念 1
1.1.1 网络编程与进程通信 1
1.1.2 Internet中网间进程的标识 3
1.1.3 网络协议的特征 7
1.1.4 高效的用户数据报协议 10
1.1.5 可靠的传输控制协议 10
1.2 三类网络编程 12
1.2.1 基于TCP/IP协议栈的网络编程 12
1.2.2 基于WWW应用的网络编程 12
1.2.3 基于.NET框架的Web Services网络编程 13
1.3 客户机/服务器交互模式 16
1.3.1 网络应用软件的地位和功能 16
1.3.2 客户机/服务器模式 16
1.3.3 客户机与服务器的特性 17
1.3.4 容易混淆的术语 18
1.3.5 客户机与服务器的通信过程 19
1.3.6 网络协议与C/S模式的关系 19
1.3.7 错综复杂的C/S交互 19
1.3.8 服务器如何同时为多个客户机服务 21
1.3.9 标识一个特定服务 22
1.4 P2P模式 23
1.4.1 P2P技术的兴起 23
1.4.2 P2P的定义和特征 23
1.4.3 P2P的发展 24
1.4.4 P2P的关键技术 24
1.4.5 P2P系统的应用与前景 25
习题 25
第2章 套接字网络编程接口基础 27
2.1 套接字网络编程接口的产生与发展 27
2.1.1 问题的提出 27
2.1.2 套接字编程接口起源于UNIX操作系统 28
2.1.3 套接字编程接口在Windows和Linux操作系统中得到继承和发展 28
2.1.4 套接字编程接口的两种实现方式 28
2.1.5 套接字通信与UNIX操作系统的输入/输出的关系 29
2.2 套接字编程的基本概念 30
2.2.1 什么是套接字 30
2.2.2 套接字的特点 31
2.2.3 套接字的应用场合 33
2.2.4 套接字使用的数据类型和相关的问题 33
2.3 面向连接的套接字编程 35
2.3.1 套接字的工作过程 35
2.3.2 套接字编程接口的系统调用 37
2.3.3 面向连接的套接字编程实例 42
2.3.4 进程的阻塞问题和对策 47
2.4 无连接的套接字编程 50
2.4.1 无连接的套接字编程的两种模式 50
2.4.2 两个专用的系统调用 52
2.4.3 数据报套接字的对等模式编程实例 53
2.5 原始套接字 55
2.5.1 原始套接字的创建 55
2.5.2 原始套接字的使用 56
2.5.3 原始套接字应用实例 57
2.6 Linux系统的网络编程接口 59
2.6.1 数据结构 60
2.6.2 主要系统调用 60
习题 64
第3章 Windows环境的网络编程 65
3.1 Windows Sockets规范 65
3.1.1 概述 65
3.1.2 Windows Sockets规范 66
3.1.3 WinSock规范与Berkeley套接口的区别 71
3.2 WinSock 1.1的库函数 74
3.2.1 WinSock的注册与注销 74
3.2.2 WinSock的错误处理函数 77
3.2.3 主要的WinSock函数 79
3.2.4 WinSock的辅助函数 93
3.2.5 WinSock的信息查询函数 95
3.2.6 WSAAsyncGetXByY类型的扩展函数 97
3.3 网络应用程序的运行环境 101
习题 103
第4章 MFC编程 104
4.1 MFC概述 104
4.1.1 MFC是一个编程框架 104
4.1.2 典型的MDI应用程序的构成 106
4.2 MFC和Win32 108
4.2.1 MFC对象和Windows对象的关系 108
4.2.2 几个主要的类 110
4.3 Cobject类 114
4.3.1 CObject类的定义 114
4.3.2 CObject类的特性 116
4.4 消息映射的实现 117
4.5 MFC对象的创建 121
4.5.1 MFC对象的关系 121
4.5.2 MFC提供的接口 123
4.5.3 MFC对象的创建过程 123
4.6 应用程序的退出 126
习题 127
第5章 MFC WinSock类的编程 128
5.1 CAsyncSocket类 129
5.1.1 使用CAsyncSocket类的一般步骤 129
5.1.2 创建CAsyncSocket类对象 130
5.1.3 关于CAsyncSocket类可以接受并处理的消息事件 131
5.1.4 客户机端套接字对象请求连接到服务器端套接字对象 133
5.1.5 服务器接收客户机的连接请求 134
5.1.6 发送与接收流式数据 135
5.1.7 关闭套接字 137
5.1.8 错误处理 137
5.1.9 其他的成员函数 138
5.2 CSocket类 139
5.2.1 创建CSocket对象 139
5.2.2 建立连接 139
5.2.3 发送和接收数据 139
5.2.4 CSocket类、CArchive类和CSocketFile类 140
5.2.5 关闭套接字和清除相关的对象 141
5.3 CSocket类的编程模型 141
5.4 CAsyncSocket类的应用实例 142
5.4.1 实现目标 142
5.4.2 创建客户机端应用程序 143
5.4.3 客户机端程序的类与消息驱动 151
5.4.4 客户机端程序主要功能的代码和分析 152
5.4.5 创建服务器端程序 159
5.4.6 服务器端程序的流程和消息驱动 161
5.4.7 点对点交谈的服务器端程序主要功能的代码和分析 162
5.5 用CSocket类实现的聊天室程序 167
5.5.1 聊天室程序的功能 167
5.5.2 创建聊天室的服务器端程序 168
5.5.3 聊天室服务器端程序的主要实现代码和分析 170
5.5.4 创建聊天室的客户机端程序 178
5.5.5 聊天室客户机端程序的主要实现代码和分析 180
习题 187
第6章 WinInet编程 188
6.1 MFC WinInet类 188
6.1.1 概述 188
6.1.2 MFC WinInet所包含的类 189
6.1.3 使用WinInet类编程的一般步骤 190
6.1.4 创建CInternetSession类对象 191
6.1.5 查询或设置Internet请求选项 192
6.1.6 创建连接类对象 193
6.1.7 使用文件检索类 194
6.1.8 重载OnStatusCallback函数 195
6.1.9 创建并使用网络文件类对象 197
6.1.10 CInternteException类 199
6.2 MFC WinInet类应用程序编程实例 199
6.2.1 程序要实现的功能 200
6.2.2 创建应用程序的过程 201
习题 203
第7章 WinSock的多线程编程 204
7.1 WinSock为什么需要多线程编程 204
7.1.1 WinSock的两种I/O模式 204
7.1.2 两种模式的优缺点及解决方法 205
7.2 Win32操作系统下的多进程多线程机制 205
7.2.1 Win32 OS是单用户多任务的操作系统 205
7.2.2 Win32 OS是支持多线程的操作系统 206
7.2.3 多线程机制在网络编程中的应用 207
7.3 VC++6.0对多线程网络编程的支持 208
7.3.1 MFC支持的两种线程 208
7.3.2 创建MFC的工作线程 209
7.3.3 创建并启动用户界面线程 211
7.3.4 终止线程 214
7.4 多线程网络编程的例子 216
7.4.1 编写线程函数 217
7.4.2 添加事件处理函数 222
习题 224
第8章 WinSock的I/O模型 225
8.1 select模型 226
8.2 WSAAsyncSelect异步I/O模型 228
8.3 WSAEventSelect事件选择模型 232
8.4 重叠I/O模型 237
8.4.1 重叠I/O模型的优点 237
8.4.2 重叠I/O模型的基本原理 238
8.4.3 重叠I/O模型的关键函数和数据结构 238
8.4.4 使用事件通知实现重叠模型的步骤 241
8.4.5 使用完成例程实现重叠模型的步骤 243
8.5 完成端口模型 245
8.5.1 什么是完成端口模型 245
8.5.2 使用完成端口模型的方法 246
习题 254
第9章 HTTP及高级编程 255
9.1 HTTP 255
9.1.1 HTTP的背景 255
9.1.2 HTTP的内容 256
9.1.3 HTTP消息的一般格式 257
9.1.4 HTTP请求的格式 258
9.1.5 HTTP响应的格式 261
9.1.6 访问认证 264
9.1.7 URL编码 265
9.1.8 HTTP的应用 266
9.2 利用CHtmlView类创建Web浏览器型的应用程序 266
9.2.1 CHtmlView类与WebBrowser控件 266
9.2.2 CHtmlView类的成员函数 267
9.2.3 创建一个Web浏览器型的应用程序的一般步骤 272
9.3 Web浏览器应用程序实例 277
9.3.1 程序实现的目标 277
9.3.2 创建实例程序 278
习题 281
第10章 电子邮件协议与编程 282
10.1 电子邮件系统的工作原理 282
10.1.1 电子邮件的特点 282
10.1.2 电子邮件系统的构成 282
10.1.3 电子邮件系统的实现 283
10.2 简单邮件传送协议 285
10.2.1 概述 285
10.2.2 SMTP客户机与SMTP服务器之间的会话 285
10.2.3 常用的SMTP命令 286
10.2.4 常用的SMTP响应码 288
10.2.5 SMTP的会话过程 289
10.2.6 使用WinSock来实现电子邮件客户机与服务器的会话 289
10.3 电子邮件信件结构详述 290
10.3.1 Internet文本信件的格式标准——RFC 822 290
10.3.2 信件的头部 291
10.3.3 构造和分析符合RFC 822标准的电子信件 296
10.4 MIME编码解码与发送附件 296
10.4.1 MIME概述 296
10.4.2 MIME定义的新的信头字段 297
10.4.3 MIME邮件的内容类型 298
10.4.4 MIME邮件的编码方式 307
10.5 POP3与接收电子邮件 309
10.5.1 POP3 309
10.5.2 POP3的会话过程 310
10.5.3 POP3会话的3个状态 311
10.5.4 POP3标准命令 311
10.5.5 接收电子邮件的一般步骤 314
10.6 接收电子邮件的程序实例 315
10.6.1 实例程序的目的和实现的技术要点 315
10.6.2 创建应用程序的过程 316
10.7 发送电子邮件的程序实例 318
10.7.1 实例程序的目的和实现的技术要点 318
10.7.2 创建应用程序的过程 319
习题 321
参考文献 322