第1章 网络编程基础 1
1.1 概述 1
1.2 ISO/OSI模型 1
1.3 网络编程接口 2
1.3.1 基于NetBIOS的网络编程 2
1.3.2 基于Winsock的网络编程 3
1.3.3 底层网络编程 3
1.3.4 基于物理设备的网络编程 3
1.4 网络通信方式 4
1.4.1 面向连接的通信和无连接通信 4
1.4.2 阻塞通信与非阻塞通信 4
1.4.3 多播通信与广播通信 5
1.5 Win32 SDK编程基础 5
1.5.1 Win32 SDK的基本概念 5
1.5.2 Windows消息驱动机制 5
1.5.3 Win32 SDK程序结构 6
习题与思考题 11
第2章 基于NetBIOS的网络编程 12
2.1 NetBIOS的基本概念 12
2.1.1 NetBIOS概述 12
2.1.2 LANA编号 12
2.1.3 NetBIOS名字 13
2.1.4 NetBIOS命令 13
2.1.5 网络控制块(NCB) 14
2.2 NetBIOS命令功能 15
2.2.1 名字管理命令 15
2.2.2 数据报通信命令 17
2.2.3 会话通信命令 20
2.2.4 控制和测试命令 27
2.3 网络编程设计要素 30
2.3.1 对话设计 30
2.3.2 通信协议与方式选择 30
2.3.3 命令执行方式 31
2.3.4 差错与超时控制 31
2.3.5 分组长度限制 32
2.4 基本程序 32
2.4.1 初始化程序 32
2.4.2 加名字与删除名字 34
2.5 数据报通信程序设计 37
2.5.1 数据报通信模型 37
2.5.2 数据报通信程序 37
2.5.3 组播与广播通信程序 42
2.6 会话通信程序设计 47
2.6.1 会话通信模型 47
2.6.2 会话通信程序 48
2.6.3 关于会话的讨论 55
习题与思考题 56
第3章 基于TCP/IP协议的网络编程 57
3.1 概述 57
3.2 协议简介 58
3.2.1 IP协议 58
3.2.2 传输层协议 59
3.2.3 客户机/服务器模式 61
3.3 地址与名字解析 61
3.3.1 IP地址 61
3.3.2 地址解析 63
3.3.3 域名解析 63
3.4 网间进程通信及端口号 64
3.5 Winsock的基本概念 65
3.6 常用Winsock函数 67
3.6.1 Winsock初始化函数 67
3.6.2 基本Winsock函数 68
3.6.3 数据传输函数 73
3.6.4 字节顺序及地址转换函数 75
3.6.5 网络信息查询函数 75
3.7 会话通信程序设计 78
3.7.1 会话通信程序结构 78
3.7.2 会话通信程序实例1 79
3.7.3 会话通信程序实例2 84
3.8 数据报通信程序设计 90
3.8.1 数据报通信程序结构 90
3.8.2 数据报通信实例 91
3.9 Winsock多播与广播通信程序设计 96
3.9.1 广播通信 96
3.9.2 多播通信 100
3.10 Winsock I/O模型 110
3.10.1 套接字的阻塞与非阻塞模式 110
3.10.2 I/O模型 112
习题与思考题 123
第4章 进程间通信 124
4.1 进程与进程间通信 124
4.2 创建一个进程 124
4.3 终止进程的运行 127
4.4 进程通信 129
4.4.1 进程通信概述 129
4.4.2 进程通信分类 129
4.5 内存文件映射 130
4.5.1 创建内存文件映射 130
4.5.2 释放内存文件映射 133
4.5.3 利用内存文件映射共享数据 134
4.5.4 利用事件实现进程同步 136
习题与思考题 136
第5章 多线程结构的网络编程 137
5.1 创建线程 137
5.1.1 线程与进程 137
5.1.2 创建一个线程 137
5.1.3 线程的挂起与激活 138
5.1.4 线程的优先级 139
5.1.5 线程的生命期 140
5.2 线程同步 141
5.2.1 等待函数 141
5.2.2 临界区 143
5.2.3 用互斥量对象实现线程同步 145
5.2.4 用信号量对象实现线程同步 147
5.2.5 用事件对象实现线程同步 149
5.3 多线程结构的网络编程技术 153
5.3.1 并发环境下的网络编程 153
5.3.2 多线程编程模型 153
5.3.3 多线程Winsock编程实例 155
习题与思考题 163
第6章 高级网络编程 164
6.1 MFC概述 164
6.1.1 MFC程序基础 164
6.1.2 MFC的宏观框架体系 165
6.2 基于MFC Socket类的网络编程 165
6.2.1 CAsynSocket类 166
6.2.2 CSocket类 174
6.2.3 基于MFC的Socket类的网络编程方法 184
6.3 利用CSocket进行面向连接通信示例 185
6.3.1 服务器端程序 185
6.3.2 客户端程序 187
习题与思考题 189
第7章 底层网络编程 190
7.1 概述 190
7.2 数据链路层帧与网络协议数据单元结构 191
7.2.1 以太网数据链路层帧结构 191
7.2.2 TCP/IP协议族协议数据单元结构 192
7.2.3 TCP/IP网络层协议及其协议数据单元 193
7.2.4 TCP/IP传输层协议及其协议数据单元 198
7.3 原始套接字编程 201
7.3.1 概念 201
7.3.2 原始套接字编程方法 202
7.3.3 原始套接字编程示例 206
7.4 基于WinPcap的网络数据包捕获技术 209
7.4.1 WinPcap简介 209
7.4.2 WinPcap环境配置 213
7.4.3 WinPcap使用方法 214
7.4.4 应用程序示例 216
7.5 基于libnet的网络数据包构造技术 220
7.5.1 libnet简介 220
7.5.2 libnet环境配置 222
7.5.3 libnet使用方法 223
7.5.4 应用程序示例 225
7.6 NDIS中间层驱动程序设计技术 226
7.6.1 NDIS概述 226
7.6.2 DDK简介 228
7.6.3 微软的中间层驱动范例:Passthru 228
7.6.4 Passthru使用方法 230
习题与思考题 232
附录1 NetBIOS命令代码表 233
附录2 NetBIOS错误代码表 234
附录3 Winsock错误代码表 236
附录4 Winsock库函数参考 241
Windows Socket 1.1库函数参考 241
Windows Socket 2扩展库函数参考 249
附录5 Ping程序示例 257
附录6 Nbtstat命令 267
参考文献 269