第一篇 通信网络编程基础 2
第1章 概论 2
1.1通信系统信号传输 2
1.1.1模拟通信 2
1.1.2数字通信 3
1.1.3数据通信 4
1.2网络通信技术原理 5
1.2.1现代通信网的概念 5
1.2.2网络通信技术 5
1.2.3网络通信OSI模型 8
1.3网络程序设计任务 9
1.3.1通信协议 9
1.3.2进程标识 10
1.3.3相关建立 11
1.3.4开发平台 11
1.3.5应用目的 11
1.3.6开发层面 12
1.3.7效率方式 13
1.3.8外部资源 13
1.4发展趋势 14
小结 15
习题 15
第2章 程序设计基础 17
2.1函数 17
2.1.1基本函数 17
2.1.2库函数 18
2.1.3 API函数 18
2.1.4回调函数 19
2.1.5挂钩函数 20
2.2句柄 20
2.3事件与消息 21
2.3.1事件 21
2.3.2消息 22
2.3.3事件与消息的区别 22
2.4进程与线程 23
2.4.1进程与线程的定义 23
2.4.2进程与线程的关系 24
2.5通信模式 25
2.5.1 C/S模式 25
2.5.2 B/S模式 25
2.5.3两种模式的比较 26
2.6通信服务 27
2.6.1面向连接服务 27
2.6.2无连接服务 27
2.6.3两种服务的比较 28
2.7通信方式 28
2.8工具方法 29
2.8.1系统平台选择 29
2.8.2开发工具 32
2.8.3设计工作流程 39
2.8.4开发经验 41
小结 42
习题 42
第二篇 通信程序设计基本方法 44
第3章 串口网络编程 44
3.1串行通信概述 44
3.1.1串行通信的模式 44
3.1.2串口的基本参数与标准 45
3.1.3串行通信握手协议 46
3.2串口通信程序设计 47
3.2.1串行通信软件工具 47
3.2.2串口操作API函数 49
3.3串口通信程序设计 53
3.3.1枚举本地机串口 53
3.3.2主机与单片机间的通信 54
3.3.3主机间的通信 57
小结 60
习题 60
第4章NetBIOS网络编程 61
4.1概述 61
4.2 NetBIOS应用服务与实现 62
4.2.1 NetBIOS应用服务 62
4.2.2 NCB/MCB 65
4.2.3 NetBIOS编程基础 71
4.3数据报通信程序设计 76
4.3.1数据报通信模型 76
4.3.2广播型数据报程序 76
4.3.3定向型数据报程序 80
4.4会话通信程序设计 81
4.4.1会话通信模型 81
4.4.2服务器端程序 82
4.4.3客户端程序 87
小结 90
习题 90
第5章IPX/SPX网络编程 91
5.1概述 91
5.2套接字 92
5.2.1基木概念 92
5.2.2 WinSock的启动与终止 95
5.2.3 WinSock的主要函数 96
5.3 IPX/SPX协议结构 98
5.3.1 IPX协议结构 98
5.3.2协议地址 99
5.3.3 SPX协议结构 102
5.4 IPX程序设计 102
5.4.1 IPX套接字创建 103
5.4.2 IPX数据收发 103
5.5 SPX程序设计 105
5.5.1 SPX套接字创建 105
5.5.2 SPX服务器端 106
5.5.3 SPX客户端 109
小结 111
习题 111
第6章TCP/IP网络编程 112
6.1 TCP/IP协议概述 112
6.1.1基本概念 112
6.1.2常用协议 114
6.1.3 TCP/IP地址函数 119
6.3 TCP编程 121
6.3.1 TCP程序结构 122
6.3.2 TCP服务器端 123
6.3.3 TCP客户端 125
6.3.4 TCP连接与断开 128
6.4 UDP编程 131
6.4.1 UDP程序结构 131
6.4.2 UDP服务器端 132
6.4.3 UDP客户端 133
6.5组播编程 134
6.5.1 IGMP程序结构 134
6.5.2 IGMP程序设计 135
6.6 WinSock I/O模型 136
6.6.1 select模型 136
6.6.2 WSAAsyncSelect模型 138
6.6.3 WSAEventSelect模型 143
小结 147
习题 147
第7章 直接网络编程 148
7.1以太网工作原理 148
7.1.1 CSMA/CD协议 148
7.1.2 NIC接收模式 150
7.1.3 NDIS驱动模型 150
7.2基于Winpcap的网络编程 152
7.2.1 Winpcap工作原理 152
7.2.2 Winpcap编程 155
7.2.3程序设计实现 161
7.3原始套接字编程 166
7.3.1原始套接字原理 166
7.3.2原始套接字ping程序设计 167
7.3.3原始套接字tracert程序设计 171
7.4基于libnet的网络编程 173
7.4.1 libnet工作原理 173
7.4.2 libnet的使用方法 174
7.4.3 libnet编程 177
7.5基于NDIS的网络编程 183
7.5.1数据包过滤层面 183
7.5.2驱动程序开发环境 185
7.5.3数据包拦截编程 188
小结 196
习题 196
第三篇通信程序设计辅助技术 198
第8章 多线程程序设计技术 198
8.1服务器线程模型 198
8.2多线程应用环境 199
8.3线程基本操作函数 200
8.3.1创建线程函数 200
8.3.2设置线程的优先级函数 200
8.3.3挂起/恢复线程 201
8.3.4等待函数 201
8.3.5终止一个线程函数 202
8.4线程同步 203
8.4.1临界区同步 203
8.4.2事件同步 205
8.4.3互斥同步 206
8.4.4信号量同步 208
8.5并发线程模型服务器设计 210
8.6完成端口服务器设计 214
8.6.1完成端口概念 214
8.6.2完成端口函数 215
8.6.3完成端口程序设计 216
小结 221
习题 221
第9章 链接库技术 222
9.1链接库概述 222
9.2静态链接库 222
9.2.1静态链接库概念 222
9.2.2静态链接库设计 223
9.2.3静态链接库调用 223
9.3动态链接库 225
9.3.1动态链接库概念 225
9.3.2动态链接库调用 226
9.3.3动态链接库编程 227
9.4传输服务提供者 228
9.4.1 SPI介绍 228
9.4.2 LSP编程 230
9.4.3 LSP程序设计 233
小结 236
习题 236
第10章 面向对象技术 237
10.1面向对象概述 237
10.1.1封装 238
10.1.2继承 239
10.1.3多态 239
10.2 MFC CAsyncSocket类网络编程 240
10.2.1 CAsyncSocket类 240
10.2.2类成员 242
10.2.3编程步骤 243
10.3 MFC CSocket类网络编程 243
10.3.1 CSocket类 243
10.3.2 CSocketFile类 245
10.3.3 CArchive类 246
10.3.4编程步骤 247
10.4多媒体通信编程 248
10.4.1多媒体网络传输技术 248
10.4.2多媒体网络程序设计 250
小结 260
习题 260
第11章P2P技术 261
11.1 P2P技术概述 261
11.1.1概念 261
11.1.2原理 262
11.2 NA7穿越 262
11.2.1 NAT概念 263
11.2.2 UDP打洞 266
11.2.3 TCP打洞 267
11.3 P2P编程 269
11.3.1 P2P协议程序 269
11.3.2服务器端程序 271
11.3.3客户端程序 274
小结 282
习题 282
第四篇 应用层网络编程 284
第12章 应用层网络编程 284
12.1 SMTP/POP3协议编程 284
12.1.1 SMTP/POP3协议简介 284
12.1.2 Base64编码 287
12.1.3 SMTP客户端设计 288
12.2 HTTP编程 290
12.2.1 HTTP简介 290
12.2.2 WinInet API 292
12.2.3 HTTP客户端设计 294
12.3 FTP编程 297
12.3.1 FTP简介 297
12.3.2 WinInet类 299
12.3.3 FTP客户端设计 300
12.4 SNMP编程 302
12.4.1 SNMP简介 302
12.4.2 SNMP的开发方法 303
12.4.3 Winsnmp API主要函数 304
12.4.4 SNMP协议程序设计 307
小结 310
习题 310
附录 网络编程参考 312
附录1 NetBIOS命令NCB参考 312
附录2 NetBIOS命令返回值参考 325
附录3 WinSock错误代码表 327
附录4 网络常见TCP/IP协议数据包结构 330
附录5 libnet函数与符号常量参考 338
附录6套接字选项 348
参考文献 351