第1章 网络编程基础 1
1.1 网络编程相关的基本概念 1
1.1.1 网络编程与进程通信 1
1.1.2 Internet中网间进程的标识 4
1.1.3 网络协议的特征 8
1.1.4 高效的用户数据报协议 10
1.1.5 可靠的传输控制协议 11
1.2 三类网络编程 13
1.2.1 基于TCP/IP协议栈的网络编程 13
1.2.2 基于WWW应用的网络编程 13
1.2.3 基于.NET框架的Web Services网络编程 14
1.3.1 网络应用软件的地位和功能 17
1.3 客户机/服务器交互模式 17
1.3.2 客户机/服务器模式 18
1.3.3 客户机与服务器的特性 19
1.3.4 容易混淆的术语 20
1.3.5 客户机与服务器的通信过程 20
1.3.6 网络协议与C/S模式的关系 21
1.3.7 错综复杂的C/S交互 21
1.3.8 服务器如何同时为多个客户机服务 23
1.3.9 标识一个特定服务 24
习题 25
第2章 UNIX套接字网络编程接口 26
2.1 UNIX套接字网络编程接口的产生与发展 26
2.1.1 问题的提出 26
2.1.3 套接字编程接口的两种实现方式 27
2.1.2 套接字编程接口的起源与应用 27
2.1.4 套接字通信与UNIX操作系统的输入/输出 28
2.2 套接字编程的基本概念 29
2.2.1 什么是套接字 29
2.2.2 套接字的特点 30
2.2.3 套接字的应用场合 32
2.2.4 套接字使用的数据类型和相关的问题 32
2.3 面向连接的套接字编程 34
2.3.1 套接字的工作过程 34
2.3.2 UNIX套接字编程接口的系统调用 36
2.3.3 面向连接的套接字编程实例 42
2.3.4 进程的阻塞问题和对策 49
2.4 无连接的套接字编程 52
2.4.1 无连接的套接字编程的两种模式 53
2.4.2 两个专用的系统调用 54
2.4.3 数据报套接字的对等模式编程实例 55
习题 58
第3章 Windows环境的网络编程 59
3.1 Windows Sockets规范 59
3.1.1 概述 59
3.1.2 Windows Sockets规范 60
3.1.3 WinSock规范与Berkeley套接口的区别 65
3.2 WinSock 1.1的库函数 68
3.2.1 WinSock的注册与注销 68
3.2.2 WinSock的错误处理函数 72
3.2.3 主要的WinSock函数 75
3.2.4 WinSock的辅助函数 89
3.2.5 WinSock的信息查询函数 92
3.2.6 WSAAsyncGetXByY类型的扩展函数 94
3.3 网络应用程序的运行环境 98
习题 99
第4章 MFC编程 101
4.1 MFC概述 101
4.1.1 MFC是一个编程框架 101
4.1.2 典型的MDI应用程序的构成 103
4.2 MFC和Win32 106
4.2.1 MFC对象和Windows对象的关系 106
4.2.2 几个主要的类 108
4.3 Cobject类 112
4.3.1 CObject类的定义 113
4.3.2 CObject类的特性 114
4.4 消息映射的实现 116
4.5 MFC对象的创建 120
4.5.1 MFC对象的关系 120
4.5.2 MFC提供的接口 122
4.5.3 MFC对象的创建过程 123
4.6 应用程序的退出 125
习题 126
第5章 MFC WinSock类的编程 128
5.1 CAsyncSocket类 129
5.1.1 使用CAsyncSocket类的一般步骤 129
5.1.2 创建CAsyncSocket类对象 131
5.1.3 关于CAsyncSocket类可以接受并处理的消息事件 132
5.1.4 客户机端套接字对象请求连接到服务器端套接字对象 134
5.1.5 服务器接受客户机的连接请求 135
5.1.6 发送与接收流式数据 136
5.1.7 关闭套接字 137
5.1.8 错误处理 138
5.1.9 其他的成员函数 139
5.2 CSocket类 140
5.2.1 创建CSocket对象 140
5.2.2 建立连接 140
5.2.3 发送和接收数据 141
5.2.4 CSocket类、CArchive类和CSocketFile类 141
5.3 CSocket类的编程模型 142
5.2.5 关闭套接字和清除相关的对象 142
5.4 CAsyncSocket类的应用实例 144
5.4.1 实现目标 144
5.4.2 创建客户机端应用程序 144
5.4.3 客户机端程序的类与消息驱动 152
5.4.4 客户机端程序主要功能的代码和分析 153
5.4.5 创建服务器端程序 163
5.4.6 服务器端程序的流程和消息驱动 165
5.4.7 点对点交谈的服务器端程序主要功能的代码和分析 166
5.5 用CSocket类实现的聊天室程序 173
5.5.1 聊天室程序的功能 173
5.5.2 创建聊天室的服务器端程序 174
5.5.3 聊天室服务器端程序的主要实现代码和分析 177
5.5.4 创建聊天室的客户机端程序 187
5.5.5 聊天室客户机端程序的主要实现代码和分析 189
习题 198
第6章 WinInet编程 199
6.1 使用WinInet API的共性问题 199
6.1.1 WinInet API函数使用的HINTERNET句柄 199
6.1.2 典型的操作流程和它们使用的句柄 200
6.1.3 如何获取WinInet API函数执行的错误信息 202
6.1.4 关于返回信息的缓冲区参数 202
6.1.5 WinInet API的异步操作模式 203
6.1.6 回调函数的定义实现与注册 204
6.2.1 一般步骤 206
6.2 使用WinInet API编制FTP客户机程序的要点 206
6.2.2 搜寻并列举FTP服务器上的文件和目录 207
6.2.3 查知或改变FTP服务器的当前目录 210
6.2.4 操作服务器上的目录 212
6.2.5 下载FTP服务器中的文件 213
6.2.6 上传文件 217
6.2.7 删除FTP服务器中的文件 220
6.2.8 重命名FTP服务器上的文件或目录 221
6.3 MFC WinInet类 221
6.3.1 概述 221
6.3.2 MFC WinInet所包含的类 222
6.3.3 使用WinInet类编程的一般步骤 224
6.3.4 创建CInternetSession类对象 224
6.3.6 创建连接类对象 226
6.3.5 查询或设置Internet请求选项 226
6.3.7 使用文件检索类 228
6.3.8 重载OnStatusCallback函数 229
6.3.9 创建并使用网络文件类对象 230
6.3.10 CInternteException类 233
6.4 MFC WinInet类应用程序编程实例 233
6.4.1 程序要实现的功能 233
6.4.2 创建应用程序的过程 235
习题 237
第7章 WinSock的多线程编程 238
7.1 WinSock为什么需要多线程编程 238
7.1.1 WinSock的两种I/O模式 238
7.2.1 Win32 OS是单用户多任务的操作系统 239
7.2 Win32操作系统下的多进程多线程机制 239
7.1.2 两种模式的优缺点及解决方法 239
7.2.2 Win32 OS是支持多线程的操作系统 240
7.2.3 多线程机制在网络编程中的应用 241
7.3 VC++6.0对多线程网络编程的支持 242
7.3.1 MFC支持的两种线程 242
7.3.2 创建MFC的工作线程 243
7.3.3 创建并启动用户界面线程 246
7.3.4 终止线程 249
7.4 多线程网络编程的例子 251
7.4.1 编写线程函数 251
7.4.2 添加事件处理函数 259
习题 261
8.1 select模型 262
第8章 WinSock的I/O模型 262
8.2 WSAAsyncSelect异步I/O模型 265
8.3 WSAEventSelect事件选择模型 270
8.4 其他模型 276
习题 277
第9章 HTTP及高级编程 278
9.1 HTTP 278
9.1.1 HTTP的基本概念 278
9.1.2 HTTP的应用 279
9.2 利用CHtmlView类创建Web浏览器型的应用程序 280
9.2.1 CHtmlView类与WebBrowser控件 280
9.2.2 CHtmlView类的成员函数 281
9.2.3 创建一个Web浏览器型的应用程序的一般步骤 286
9.3.1 程序实现的目标 292
9.3 Web浏览器应用程序实例 292
9.3.2 创建实例程序 293
习题 297
第10章 电子邮件协议与编程 298
10.1 电子邮件系统的工作原理 298
10.1.1 电子邮件的特点 298
10.1.2 电子邮件系统的构成 298
10.1.3 电子邮件系统的实现 299
10.2 简单邮件传送协议 301
10.2.1 概述 301
10.2.2 SMTP客户机与SMTP服务器之间的会话 301
10.2.3 常用的SMTP命令 302
10.2.4 常用的SMTP响应码 304
10.2.5 SMTP的会话过程 305
10.2.6 使用WinSock来实现电子邮件客户机与服务器的会话 306
10.3 电子邮件信件结构详述 306
10.3.1 Internet文本信件的格式标准——RFC822 306
10.3.2 信件的头部 308
10.3.3 构造和分析符合RFC822标准的电子信件 313
10.4 MIME编码解码与发送附件 313
10.4.1 MIME概述 313
10.4.2 MIME定义的新的信头字段 314
10.4.3 MIME邮件的内容类型 315
10.4.4 MIME邮件的编码方式 325
10.5.2 POP3的会话过程 328
10.5.1 POP3 328
10.5 POP3与接收电子邮件 328
10.5.3 POP3会话的3个状态 330
10.5.4 POP3标准命令 330
10.5.5 接收电子邮件的一般步骤 333
10.6 接收电子邮件的程序实例 334
10.6.1 实例程序的目的和实现的技术要点 334
10.6.2 创建应用程序的过程 335
10.7 发送电子邮件的程序实例 337
10.7.1 实例程序的目的和实现的技术要点 337
10.7.2 创建应用程序的过程 338
习题 340
参考文献 342