《TCP/IP网络编程基础教程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:王雷
  • 出 版 社:北京:北京理工大学出版社
  • 出版年份:2017
  • ISBN:9787568237628
  • 页数:275 页
图书介绍:本书共分为八章与两个附录,主要分为以下四个大的部分:① 第1章为第一部分,主要介绍了TCP/IP网络通信原理与套接字API编程的基本原理与方法;② 第2章至第7章为第二部分,其中,第2章主要介绍循环服务器软件的实现原理与方法、第3章主要介绍服务器与客户进程中的并发机制、第4章到第7章则主要介绍多种不同并发服务器的实现原理与方法;③ 第8章为第三部分,主要介绍了客户/服务器系统中存在的死锁问题及其解决方法;④ 附录A和附录B为第四部分,其中,附录A主要介绍了GCC编译器的安装与使用方法、附录B则针对全书的四个核心知识点分别给出了四个不同的课程实验项目。

第1章 基于套接字的TCP/IP网络通信原理与模型 1

1.1 TCP/IP协议概述 1

1.1.1 TCP/IP参考模型 1

1.1.2 TCP/IP网络通信中的客户-服务器模型 2

1.1.3 TCP/IP参考模型的通信原理 2

1.2 基于套接字的网络通信原理 4

1.2.1 套接字概述 4

1.2.2 基于套接字的TCP/IP网络通信原理 5

1.2.3 基于套接字的TCP/IP网络通信软件实现流程 8

1.3 基于套接字的TCP/IP网络通信过程中的相关问题 10

1.3.1 客户算法中服务器套接字端点地址查找问题 10

1.3.2 客户算法中本地端点地址的选择问题 10

1.3.3 套接字端点地址的存储结构问题 11

1.3.4 客户-服务器模型中的汇聚点问题 12

1.3.5 主机字节顺序与网络字节顺序问题 12

1.3.6 IP地址与端口号的查找问题 13

1.3.7 由协议名查找协议号的问题 15

1.3.8 服务器算法中熟知端口的绑定问题 16

1.4 套接字API概述 16

1.4.1 BSD UNIX套接字API系统函数简介 16

1.4.2 Windows套接字API扩展系统函数简介 24

1.5 基于套接字的TCP/IP网络通信模型与实现方法 34

1.5.1 UNIX/Linux环境下UDP套接字通信模型与实现方法 34

1.5.2 UNIX/Linux环境下TCP套接字通信模型与实现方法 37

1.5.3 Windows环境下UDP套接字通信模型与实现方法 41

1.5.4 Windows环境下TCP套接字通信模型与实现方法 45

1.6 本章小结 50

本章习题 50

第2章 循环服务器软件的实现原理与方法 51

2.1 客户/服务器模型中服务器软件实现的复杂性 51

2.1.1 服务器设功能需求的复杂性 51

2.1.2 服务器类型的复杂性 51

2.2 循环服务器的进程结构 53

2.2.1 循环UDP服务器的进程结构 53

2.2.2 循环TCP服务器的进程结构 54

2.3 循环服务器软件的设计流程 54

2.3.1 循环UDP服务器软件的设计流程 54

2.3.2 循环TCP服务器软件的设计流程 56

2.4 基于循环服务器的网络通信例程剖析 57

2.4.1 相关系统函数及其调用方法简介 57

2.4.2 UNIX/Linux环境下基于TCP套接字的例程剖析 72

2.4.3 Windows环境下基于TCP套接字的例程剖析 77

2.4.4 UNIX/Linux环境下基于UDP套接字的例程剖析 82

2.4.5 Windows环境下基于UDP套接字的例程剖析 86

2.4.6 UNIX/Linux环境下基于TCP套接字的文件传输例程剖析 91

2.4.7 UNIX/Linux环境下基于TCP套接字的音频传输例程剖析 95

2.4.8 Windows环境下基于TCP套接字的图像传输例程剖析 104

2.4.9 Windows环境下基于TCP套接字的视频传输例程剖析 108

2.5 本章小结 111

本章习题 112

第3章 服务器与客户进程中的并发机制 113

3.1 服务器与客户进程中的并发概念 113

3.1.1 服务器进程中的并发问题 113

3.1.2 客户进程中的并发问题 114

3.1.3 服务器与客户端并发性的实现方法 115

3.1.4 循环服务器与并发服务器 115

3.1.5 多进程与多线程并发概念 115

3.1.6 并发等级 116

3.2 UNIX/Linux环境下基于多进程并发机制 117

3.2.1 创建一个新进程 117

3.2.2 终止一个进程 118

3.2.3 获得一个进程的进程标识 118

3.2.4 获得一个进程的父进程的进程标识 119

3.2.5 僵尸进程的清除 119

3.2.6 多进程例程剖析 124

3.3 UNIX/Linux环境下基于多线程的并发机制 125

3.3.1 创建一个新线程 125

3.3.2 设置线程的运行属性 127

3.3.3 终止一个线程 132

3.3.4 获得一个线程的线程标识 132

3.3.5 多线程例程剖析 132

3.4 Windows环境下基于多进程的并发机制 133

3.4.1 创建一个新进程 133

3.4.2 打开一个进程 137

3.4.3 终止/关闭一个进程 137

3.4.4 获得进程的可执行文件或DLL对应的句柄 138

3.4.5 获取与指定窗口关联在一起的一个进程和线程标识符 138

3.4.6 获取进程的运行时间 138

3.4.7 获取当前进程ID 138

3.4.8 等待子进程/子线程的结束 139

3.4.9 多进程例程剖析 140

3.5 Windows环境下基于多线程的并发机制 141

3.5.1 在本地进程中创建一个新线程 141

3.5.2 在远程进程中创建一个新线程 142

3.5.3 获取/设置线程的优先级 143

3.5.4 终止一个线程 144

3.5.5 挂起/启动一个线程 145

3.5.6 获得一个线程的标识 145

3.5.7 多线程例程剖析 145

3.6 从线程/进程分配技术 146

3.6.1 从线程/进程预分配技术 146

3.6.2 延迟的从线程/进程分配技术 146

3.6.3 两种从线程/进程分配技术的结合 147

3.7 基于多进程与基于多线程的并发机制的性能比较 147

3.7.1 多进程与多线程的任务执行效率比较 147

3.7.2 多进程与多线程的创建与销毁效率比较 149

3.8 本章小结 151

本章习题 152

第4章 多进程并发机制的实现原理与方法 153

4.1 多进程并发TCP服务器与客户端进程结构 153

4.1.1 多进程并发TCP服务器进程结构 153

4.1.2 多进程并发客户端进程结构 154

4.2 UNIX/Linux环境下多进程并发TCP服务器软件设计流程 154

4.2.1 不固定进程数的并发TCP服务器软件设计流程 154

4.2.2 固定进程数的并发TCP服务器软件设计流程 155

4.3 UNIX/Linux环境下多进程并发TCP服务器通信实现例程 155

4.3.1 不固定进程数的多进程并发TCP服务器通信实现例程 155

4.3.2 固定进程数的多进程并发TCP服务器通信实现例程 160

4.3.3 UNIX/Linux服务器与Windows客户端通信实现例程 164

4.3.4 基于SMTP和POP3协议的电子邮件收发实现例程 166

4.4 本章小结 173

本章习题 174

第5章 多线程并发TCP服务器软件的实现原理与方法 175

5.1 线程之间的协调与同步 175

5.1.1 UNIX/Linux环境下线程之间的协调与同步 175

5.1.2 Windows环境下线程之间的协调与同步 192

5.2 基于多线程的并发TCP服务器软件设计流程 202

5.2.1 不固定线程数的并发TCP服务器软件设计流程 202

5.2.2 固定线程数的并发TCP服务器软件设计流程 203

5.3 多线程并发TCP服务器实现例程 203

5.3.1 UNIX/Linux环境下多线程并发TCP服务器实现例程 203

5.3.2 Windows环境下多线程并发TCP服务器实现例程 208

5.4 本章小结 212

本章习题 213

第6章 单线程并发机制的实现原理与方法 214

6.1 单线程并发TCP服务器与客户端的进程结构 214

6.1.1 单线程并发TCP服务器的进程结构 214

6.1.2 单线程并发TCP客户端的进程结构 215

6.2 单线程并发TCP服务器软件的设计流程 216

6.2.1 UNIX/Linux环境下单线程并发TCP服务器软件设计流程 216

6.2.2 Windows环境下单线程并发TCP服务器软件设计流程 218

6.3 单线程并发TCP服务器实现例程 219

6.3.1 UNIX/Linux环境下单线程并发TCP服务器实现例程 219

6.3.2 Windows环境下单线程并发TCP服务器实现例程 221

6.3.3 UNIX/Linux环境下单线程并发TCP客户端实现例程 223

6.3.4 Windows环境下单线程并发TCP客户端实现例程 228

6.4 本章小结 230

本章习题 230

第7章 基于POOL和EPOLL的并发机制与实现方法 231

7.1 POOL简介 231

7.1.1 POOL的定义 231

7.1.2 线程池的基本工作原理 232

7.1.3 线程池的应用范围 233

7.1.4 使用线程池的风险 234

7.2 UNIX/Linux环境下线程池的C语言实现例程 235

7.2.1 线程池的主要组成部分 235

7.2.2 线程池的C语言实现例程剖析 236

7.2.3 基于线程池的并发TCP服务器例程 240

7.4 EPOLL简介 248

7.4.1 EPOLL的定义 248

7.4.2 EPOLL的基本接口函数 248

7.4.3 EPOLL的事件模式 249

7.4.4 EPOLL的工作原理 250

7.5 基于EPOLL线程池的C语言例程 250

7.5.1 基于EPOLL线程池的C语言例程剖析 250

7.5.2 基于EPOLL的并发TCP服务器例程 254

7.6 本章小结 257

本章习题 257

第8章 客户/服务器系统中的死锁问题 259

8.1 死锁的定义 259

8.2 产生死锁的原因 260

8.2.1 竞争资源引起进程死锁 260

8.2.2 进程推进顺序不当引起死锁 260

8.3 产生死锁的必要条件 260

8.4 处理死锁的基本方法 261

8.5 存在死锁问题的多线程例程 262

8.6 本章小结 263

本章习题 264

附录A GCC编译器简介 265

A.1 GCC编译器所支持的源程序格式 265

A.2 GCC编译选项解析 266

A.2.1 GCC编译选项分类 266

A.2.2 GCC编译过程解析 268

A.2.3 多个程序文件的编译 269

A.3 GCC编译器的安装 269

附录B 课程实验 272

B.1 课程实验报告模板 272

B.2 《SocketAPI函数调用方法》课程实验 273

B.3 《电子邮件收发系统的设计与实现》课程实验 273

B.4 《文本聊天系统的设计与实现》课程实验 273

B.5 《多媒体网络聊天系统的设计与实现》课程实验 274

参考文献 275