第1章 网络编程基础 1
1.1概述 1
1.2 ISO/OSI模型 1
目 录 1
1.3网络编程接口 2
1.3.1基于NetBIOS的网络编程 2
1.3.3直接网络编程 3
1.3.4基于物理设备的网络编程 3
1.3.2基于Winsock的网络编程 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.1名字管理命令 15
2.2 NetBIOS命令功能 15
2.2.2数据报通信命令 17
2.2.3会话通信命令 21
2.2.4控制和测试命令 27
2.3网络编程设计要素 30
2.3.1 对话设计 30
2.3.2通信协议与方式选择 31
2.3.3命令执行方式 31
2.4基本程序 32
2.4.1初始化程序 32
2.3.5分组长度限制 32
2.3.4差错与超时控制 32
2.4.2加名字与删除名字 34
2.5数据报通信程序设计 37
2.5.1数据报通信模型 37
2.5.2数据报通信程序 38
2.5.3组播与广播通信程序 43
2.6会话通信程序设计 48
2.6.1会话通信模型 48
2.6.2会话通信程序 48
5.3多线程结构的网络编程技术 (1 53
2.6.3关于会话的讨论 55
习题与思考题 56
第3章 基于TCP/IP协议的网络编程 58
3.1 概述 58
3.2协议简介 59
3.2.1 IP协议 59
3.2.2传输层协议 60
3.3.1 IP地址 62
3.2.3客户机/服务器模式 62
3.3地址与名字解析 62
3.3.2地址解析 64
3.3.3域名解析 64
3.4 网间进程通信及端口号 65
3.5 Winsock的基本概念 66
3.6.1 Winsock初始化函数 68
3.6常用Winsock函数 68
3.6.2基本Winsock函数 69
3.6.3数据传输函数 74
3.6.4字节顺序及地址转换函数 75
3.6.5网络信息查询函数 76
3.7会话通信程序设计 78
3.7.1 会话通信程序结构 78
3.7.2会话通信程序实例1 79
3.7.3会话通信程序实例2 84
3.8数据报通信程序设计 91
3.8.1数据报通信程序结构 91
3.8.2数据报通信实例 92
3.9 Winsock多播与广播通信程序设计 96
3.9.1 广播通信 96
3.9.2多播通信 101
3.10 Winsock I/O模型 111
3.10.1 套接字的阻塞与非阻塞模式 111
3.10.2 I/O模型 112
习题与思考题 123
第4章进程间通信 125
4.1 进程与进程间通信 125
4.2创建一个进程 125
4.3终止进程的运行 128
4.4.2进程通信分类 130
4.4.1进程通信概述 130
4.4进程通信 130
4.5 内存文件映射 131
4.5.1创建内存文件映射 131
4.5.2释放内存文件映射 134
4.5.3利用内存文件映射共享数据 135
4.5.4利用事件实现进程同步 137
习题与思考题 137
5.1.2创建一个线程 138
5.1.1线程与进程 138
第5章 多线程结构的网络编程 138
5.1 创建线程 138
5.1.3线程的挂起与激活 139
5.1.4线程的优先级 140
5.1.5线程的生命期 141
5.2线程同步 142
5.2.1 等待函数 142
5.2.2 临界区 144
5.2.3用互斥量对象实现线程同步 146
5.2.4用信号量对象实现线程同步 148
5.2.5用事件对象实现线程同步 150
5.3.1并发环境下的网络编程 153
5.3.2多线程编程模型 154
5.3.3多线程Winsock编程实例 156
习题与思考题 164
第6章动态链接库在网络程序中的应用 165
6.1动态链接库概述 165
6.3.1 源代码文件(.C)的结构 166
6.3创建动态链接库 166
6.2动态链接库的特点 166
6.3.2模块定义文件(.DEF)的结构和各段的意义 168
6.3.3 函数声明文件(.H) 168
6.3.4 工程文件(.PRJ) 169
6.4调用动态链接库 169
6.4.1 隐式链接方式加载DLL 169
6.4.2显式方式加载DLL 170
习题与思考题 171
7.1 概述 172
第7章直接网络编程技术 172
7.2数据链路层帧与网络协议数据单元结构 173
7.2.1 以太网数据链路层帧结构 173
7.2.2 TCP/IP协议族协议数据单元结构 174
7.2.3 TCP/IP网络层协议及其协议数据单元 174
7.2.4路由协议 180
7.2.5 TCP/IP传输层协议及其协议数据单元 183
7.3原始套接字编程 185
7.3.1 概念 185
7.3.2原始套接字的ICMP实现 186
7.4基于Winpcap的网络数据包捕获技术 188
7.4.1Winpcap简介 188
7.4.2数据包捕获驱动器结构 190
7.4.3 数据包捕获驱动程序API(PACKET.DLL)的使用 192
7.4.4数据包捕获函数库(wpcap.1ib)的使用 209
7.5基于libnet的网络数据包构造技术 242
7.5.1 libnet简介 242
7.5.2 libnet使用方法 244
7.5.3 libnet函数 246
7.5.4应用程序示例 259
习题与思考题 274
附录1 NetBIOS命令代码表 275
附录2 NetBIOS错误代码表 276
附录3 Winsock错误代码表 278
附录4 Winsock库函数参考 283
Windows Socket 1.1库函数参考 283
Windows Socket 2扩展库函数参考 291
附录5 Ping程序示例 299