用TCP/IP进行网际互连:第3卷·客户-服务器编程与应用:Linux/POSIX套接字版PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:(美)科默等著
- 出 版 社:北京:电子工业出版社
- 出版年份:2008
- ISBN:9787121073861
- 页数:431 页
第1章 引言和概述 1
1.1使用TCP/IP的因特网应用 1
1.2为分布式环境设计应用程序 1
1.3标准和非标准的应用协议 1
1.4使用标准应用协议的例子 1
1.5 telnet连接的例子 2
1.6使用TELNET访问其他服务 3
1.7应用协议和软件的灵活性 4
1.8从提供者的角度看服务 4
1.9本教材的其余部分 5
1.10小结 5
深入研究 5
习题 5
第2章 客户-服务器模型与软件设计 7
2.1引言 7
2.2动机 7
2.3术语和概念 8
2.3.1客户和服务器 8
2.3.2特权和复杂性 8
2.3.3标准和非标准客户软件 9
2.3.4客户的参数化 9
2.3.5无连接的和面向无连接的服务器 10
2.3.6无状态和有状态服务器 10
2.3.7无状态文件服务器的例子 11
2.3.8有状态文件服务器的例子 11
2.3.9标识客户 12
2.3.10无状态是一个协议问题 13
2.3.11充当客户的服务器 13
2.4小结 14
深入研究 14
习题 15
第3章 客户-服务器软件中的并发处理 16
3.1引言 16
3.2网络中的并发 16
3.3服务器中的并发 17
3.4术语和概念 18
3.4.1进程概念 18
3.4.2局部和全局变量的共享 19
3.4.3过程调用 20
3.5一个创建并发进程的例子 20
3.5.1一个顺序执行的C实例 20
3.5.2程序的并发版本 21
3.5.3时间分片 22
3.5.4单线程的进程 23
3.5.5使各进程分离 23
3.6执行新的代码 24
3.7上下文切换和协议软件设计 25
3.8并发和异步I/O 25
3.9小结 25
深入研究 26
习题 26
第4章 协议的程序接口 27
4.1引言 27
4.2不精确指明的协议软件接口 27
4.2.1优点与缺点 27
4.3接口功能 28
4.4概念性接口的规约 28
4.5系统调用 28
4.6网络通信的两种基本方法 29
4.7 LINIX中提供的基本O功能 29
4.8将Linux I/O用于TCP/IP 30
4.9小结 31
深入研究 31
习题 31
第5章 套接字API 32
5.1引言 32
5.2 Berkeley套接字 32
5.3指明一个协议接口 32
5.4套接字的抽象 33
5.4.1套接字描述符和文件描述符 33
5.4.2针对套接字的系统数据结构 34
5.4.3主动套接字或被动套接字 35
5.5指明端点地址 35
5.6类属地址结构 35
5.7套接字API中的主要系统调用 36
5.7.1 socket调用 37
5.7.2 connect调用 37
5.7.3 send调用 37
5.7.4 recv调用 37
5.7.5 close调用 38
5.7.6 bind调用 38
5.7.7 listen调用 38
5.7.8 accept调用 38
5.7.9在套接字中使用read和write 38
5.7.10套接字调用小结 39
5.8用于整数转换的实用例程 39
5.9在程序中使用套接字调用 40
5.10套接字调用的参数所使用的符号常量 40
5.11小结 41
深入研究 41
习题 41
第6章 客户软件设计中的算法和问题 43
6.1引言 43
6.2不是研究细节而是学习算法 43
6.3客户体系结构 43
6.4标识服务器的位置 44
6.5分析地址参数 45
6.6查找域名 45
6.7由名字查找某个熟知端口 46
6.8端口号和网络字节顺序 47
6.9由名字查找协议 47
6.10 TCP客户算法 48
6.11分配套接字 48
6.12选择本地协议端口号 48
6.13选择本地IP地址中的一个基本问题 49
6.14将TCP套接字连接到某个服务器 49
6.15使用TCP与服务器通信 50
6.16从TCP连接中读取响应 50
6.17关闭TCP连接 51
6.17.1对部分关闭的需要 51
6.17.2部分关闭的操作 51
6.18 UDP客户的编程 51
6.19连接的和非连接的UDP套接字 52
6.20对UDP使用connect 52
6.21使用UDP与服务器通信 52
6.22关闭使用UDP的套接字 53
6.23对UDP的部分关闭 53
6.24关于UDP不可靠性的警告 53
6.25小结 53
深入研究 54
习题 54
第7章 客户软件举例 55
7.1引言 55
7.2小例子的重要性 55
7.3隐藏细节 55
7.4针对客户程序的过程库例子 56
7.5 connectTCP的实现 56
7.6 connectUDP的实现 57
7.7构成连接的过程 57
7.8使用例子库 60
7.9 DAYTIME服务 60
7.10针对DAYTIME的TCP客户实现 61
7.11从TCP连接中进行读 62
7.12 TIME服务 63
7.13访问TIME服务 63
7.14精确时间和网络时延 63
7.15针对TIME服务的UDP客户 64
7.16 ECHO服务 65
7.17针对ECHO服务的TCP客户 66
7.18针对ECHO服务的UDP客户 67
7.19小结 69
深入研究 70
习题 70
第8章 服务器软件设计的算法和问题 71
8.1引言 71
8.2概念性的服务器算法 71
8.3并发服务器和循环服务器 71
8.4面向连接的和无连接的访问 72
8.5传输协议的语义 72
8.5.1 TCP语义 72
8.5.2 UDP语义 73
8.6选择传输协议 73
8.7面向连接的服务器 73
8.8无连接的服务器 74
8.9故障、可靠性和无状态 74
8.10优化无状态服务器 75
8.11四种基本类型的服务器 76
8.12请求处理时间 77
8.13循环服务器的算法 77
8.14一种循环的、面向连接的服务器的算法 78
8.15用INADDR_ANY绑定熟知端口 78
8.16将套接字置于被动模式 78
8.17接受连接并使用这些连接 79
8.18循环的、无连接的服务器的算法 79
8.19在无连接的服务器中构造应答 79
8.20并发服务器的算法 80
8.21主线程和从线程 80
8.22并发的、无连接的服务器的算法 81
8.23并发的、面向连接服务器的算法 81
8.24服务器并发性的实现 82
8.25把单独的程序作为从进程来使用 82
8.26使用单线程获得表面上的并发性 83
8.27各服务器类型所适用的场合 83
8.28服务器类型小结 84
8.29重要问题——服务器死锁 85
8.30其他的实现方法 85
8.31小结 85
深入研究 86
习题 86
第9章 循环的、无连接服务器(UDP) 87
9.1引言 87
9.2创建被动套接字 87
9.3进程结构 90
9.4 TIME服务器举例 91
9.5小结 92
深入研究 92
习题 93
第10章 循环的、面向连接的服务器(TCP) 94
10.1引言 94
10.2分配被动的TCP套接字 94
10.3用于DAYTIME服务的服务器 95
10.4进程结构 95
10.5 DAYTIME服务器举例 95
10.6关闭连接 98
10.7连接终止和服务器的脆弱性 98
10.8小结 98
深入研究 99
习题 99
第11章 并发的、面向连接的服务器(TCP) 100
11.1引言 100
11.2并发ECHO 100
11.3循环与并发实现的比较 100
11.4进程结构 101
11.5并发ECHO服务器举例 101
11.6清除游离(errant)进程 104
11.7小结 105
深入研究 105
习题 105
第12章 将线程用于并发(TCP) 106
12.1引言 106
12.2 Linux线程概述 106
12.3线程的优点 106
12.4线程的缺点 107
12.5描述符、延迟和退出 107
12.6线程退出 108
12.7线程协调和同步 108
12.7.1互斥 108
12.7.2信号量 108
12.7.3条件变量 109
12.8使用线程的服务器实例 109
12.9监控 113
12.10小结 113
深入研究 113
习题 114
第13章 单线程、并发服务器(TCP) 115
13.1引言 115
13.2服务器中的数据驱动处理 115
13.3用单线程进行数据驱动处理 116
13.4单线程服务器的线程结构 116
13.5单线程ECHO服务器举例 117
13.6小结 119
深入研究 119
习题 120
第14章 多协议服务器(TCP,UDP) 121
14.1引言 121
14.2减少服务器数量的动机 121
14.3多协议服务器的设计 121
14.4进程结构 122
14.5多协议DAYTIME服务器的例子 122
14.6共享代码的概念 125
14.7并发多协议服务器 125
14.8小结 126
深入研究 126
习题 126
第15章 多服务服务器(TCP,UDP) 127
15.1引言 127
15.2合并服务器 127
15.3无连接的、多服务服务器的设计 127
15.4面向连接的、多服务服务器的设计 128
15.5并发的、面向连接的、多服务服务器 129
15.6单线程的、多服务服务器的实现 129
15.7从多服务服务器调用单独的程序 130
15.8多服务、多协议设计 131
15.9多服务服务器的例子 131
15.10静态的和动态的服务器配置 137
15.11 UNIX超级服务器,inetd 138
15.12 inetd服务器的例子 140
15.13服务器的几种变形清单 141
15.14小结 141
深入研究 142
习题 142
第16章 服务器并发性的统一、高效管理 143
16.1引言 143
16.2在循环设计和并发设计间选择 143
16.3并发等级 143
16.4需求驱动的并发 144
16.5并发的代价 144
16.6额外开销和时延 144
16.7小时延可能出麻烦 145
16.8从线程/进程预分配 146
16.8.1 Linux中的预分配 146
16.8.2面向连接服务器中的预分配 147
16.8.3互斥、文件锁定和accept并发调用 147
16.8.4无连接服务器中的预分配 148
16.8.5预分配、突发通信量和NFS 149
16.8.6多处理器上的预分配 149
16.9延迟的从线程/进程分配 149
16.10两种技术统一的基础 150
16.11技术的结合 150
16.12小结 151
深入研究 151
习题 151
第17章客户进程中的并发 153
17.1引言 153
17.2并发的优点 153
17.3运用控制的动机 153
17.4与多个服务器的并发联系 154
17.5实现并发客户 154
17.6单线程实现 155
17.7使用ECHO的并发客户例子 156
17.8并发客户的执行 160
17.9例子代码中的并发性 161
17.10小结 161
习题 162
第18章 运输层和应用层的隧道技术 163
18.1引言 163
18.2多协议环境 163
18.3混合网络技术 164
18.4动态电路分配 165
18.5封装和隧道技术 166
18.6通过IP互联网的隧道技术 166
18.7客户和服务器之间的应用级隧道技术 166
18.8隧道技术、封装和电话拨号线 167
18.9小结 168
深入研究 168
习题 168
第19章 应用级网关 169
19.1引言 169
19.2在受约束的环境中的客户和服务器 169
19.2.1限制访问的现实 169
19.2.2有限功能的计算机 169
19.2.3安全性引起的连通性约束 169
19.3使用应用网关 170
19.4通过邮件网关互操作 171
19.5邮件网关的实现 171
19.6应用网关与隧道技术的比较 172
19.7应用网关和有限因特网连接 173
19.8为解决安全问题而使用的应用网关 174
19.9应用网关和额外跳问题 174
19.10应用网关举例 176
19.11一个应用网关的实现 176
19.12应用网关的代码 178
19.13网关交换的例子 179
19.14使用rfcd和.forward或slocal文件 179
19.15通用的应用网关 180
19.16SLIRP的运行 180
19.17SLIRP如何处理连接 181
19.18IP寻址和SLIRP 181
19.19小结 182
深入研究 182
习题 183
第20章 外部数据表示(XDR) 184
20.1引言 184
20.2数据表示 184
20.3N平方转换问题 185
20.4网络标准字节顺序 185
20.5外部数据表示的事实上的标准 186
20.6 XDR数据类型 186
20.7隐含类型 187
20.8使用XDR的软件支持 187
20.9 XDR库例程 188
20.10一次一片地构造报文 188
20.11 XDR库中的转换例程 189
20.12 XDR流、I/O和TCP 190
20.13记录、记录边界和数据报I/O 190
20.14小结 191
深入研究 191
习题 191
第21章 远程过程调用(RPC)的概念 193
21.1引言 193
21.2远程过程调用模型 193
21.3构建分布式程序的两种模式 193
21.4常规过程调用的概念性模型 194
21.5过程模型的扩充 194
21.6常规过程调用的执行和返回 195
21.7分布式系统中的过程模型 196
21.8客户-服务器和RPC之间的类比 196
21.9作为程序的分布式计算 197
21.10 Sun Microsystems的远程过程调用定义 197
21.11远程程序和过程 198
21.12减少参数的数量 198
21.13标识远程程序和过程 198
21.14适应远程程序的多个版本 200
21.15远程程序中的互斥 200
21.16通信语义 200
21.17至少一次语义 201
21.18 RPC重传 201
21.19将远程程序映射到协议端口 201
21.20动态端口映射 202
21.21 RPC端口映射器算法 202
21.22 ONC RPC的报文格式 203
21.23对远程过程进行参数排序 205
21.24鉴别 205
21.25 RPC报文表示的例子 206
21.26 UNIX鉴别字段的例子 206
21.27小结 207
深入研究 208
习题 208
第22章 分布式程序的生成(rpcgen的概念) 209
22.1引言 209
22.2使用远程过程调用 209
22.3支持RPC的编程工具 210
22.4将程序划分成本地过程和远程过程 211
22.5为RPC增加代码 211
22.6stub过程 212
22.7多个远程过程和分派 212
22.8客户端的stub过程的名字 213
22.9使用rpcgen生成分布式程序 213
22.10 rpcgen输出和接口过程 214
22.11 rpcgen的输入和输出 215
22.12使用rpcgen构建客户和服务器 215
22.13小结 215
深入研究 216
习题 216
第23章 分布式程序的生成(rpcgen的例子) 218
23.1引言 218
23.2说明rpcgen的例子 218
23.3查找字典 218
23.4分布式程序的八个步骤 219
23.5步骤1:构建常规应用程序 220
23.6步骤2:将程序划分成两部分 224
23.7步骤3:创建rpcgen规约 229
23.8步骤4:运行rpcgen 230
23.9 rpcgen产生的.h文件 230
23.10 rpcgen产生的XDR转换文件 232
23.11 rpcgen产生的客户代码 233
23.12 rpcgen产生的服务器代码 235
23.13步骤5:编写stub接口过程 238
23.13.1客户端接口例程 238
23.13.2服务器端接口例程 240
23.14步骤6:编译和链接客户程序 241
23.15步骤7:编译和链接服务器程序 244
23.16步骤8:启动服务器和执行客户 246
23.17使用make实用程序 247
23.18小结 249
深入研究 249
习题 249
第24章 网络文件系统(NFS)的概念 251
24.1引言 251
24.2远程文件存取和传送 251
24.3对远程文件的操作 252
24.4异构计算机之间的文件存取 252
24.5无状态服务器 252
24.6 NFS和UNIX的文件语义 252
24.7 UNIX文件系统的回顾 253
24.7.1基本定义 253
24.7.2无记录界限的字节序列 253
24.7.3文件拥有者和组标识符 253
24.7.4保护和存取 253
24.7.5打开-读-写-关闭范例 254
24.7.6数据传送 255
24.7.7搜索目录权限 255
24.7.8随机存取 255
24.7.9搜索超过文件的结束 256
24.7.10文件位置和并发存取 256
24.7.11在并发存取时的“写(write)”语义 257
24.7.12文件名和路径 257
24.7.13索引节点(inode):存储在文件中的信息 257
24.7.14 stat操作 259
24.7.15文件命名机制 259
24.7.16文件系统mount 260
24.7.17 UNIX文件名解析 261
24.7.18符号链接 262
24.8 NFS下的文件 262
24.9 NFS的文件类型 262
24.10 NFS文件模式 263
24.11 NFS文件属性 263
24.12 NFS客户和服务器 264
24.13 NFS客户操作 265
24.14 NFS客户与UNIX系统 266
24.15 NFS安装 266
24.16文件句柄 267
24.17句柄取代路径名 267
24.18无状态服务器的文件定位 268
24.19对目录的操作 269
24.20无状态地读目录 269
24.21 NFS服务器中的多个分层结构 269
24.22安装(mount)协议 270
24.23 NFS的传输协议 270
24.24小结 270
深入研究 271
习题 271
第25章 网络文件系统协议(NFS,Mount) 272
25.1引言 272
25.2用RPC定义协议 272
25.3用数据结构和过程定义协议 272
25.4 NFS常数、类型和数据声明 273
25.4.1 NFS常数 273
25.4.2 NFS的typedef声明 274
25.4.3 NFS数据结构 274
25.5 NFS过程 277
25.6 NFS操作的语义 277
25.6.1 NFSPROC3_NULL(过程0) 277
25.6.2 NFSPROC3_GETATTR(过程1) 278
25.6.3 NFSPROC3_SETATTR(过程2) 278
25.6.4 NFSPROC3_LOOKUP(过程3) 278
25.6.5 NFSPROC3_ACCESS(过程4) 278
25.6.6 NFSPROC3_READLINK(过程5) 278
25.6.7 NFSPROC3_READ(过程6) 278
25.6.8 NFSPROC3_WRITE(过程7) 278
25.6.9 NFSPROC3_CREATE(过程8) 278
25.6.10 NFSPROC3_MKDIR(过程9) 278
25.6.11 NFSPROC3_SYMLINK(过程10) 279
25.6.12 NFSPROC3_MKNOD(过程11) 279
25.6.13 NFSPROC3_REMOVE(过程12) 279
25.6.14 NFSPROC3_RMDIR(过程13) 279
25.6.15 NFSPROC3_RENAME(过程14) 279
25.6.16 NFSPROC3_LINK(过程15) 279
25.6.17 NFSPROC3_READDIR(过程16) 279
25.6.18 NFSPROC3_READDIRPLUS(过程17) 280
25.6.19 NFSPROC3_FSSTAT(过程18) 280
25.6.20 NFSPROC3_FSINO(过程19) 280
25.6.21 NFSPROC3_PATHCONF(过程20) 280
25.6.22 NFSPROC3_COMMIT(过程21) 280
25.7安装协议 280
25.7.1安装协议的常数定义 280
25.7.2安装协议的类型定义 281
25.7.3安装数据结构 281
25.8安装协议中的过程 282
25.9安装操作的语义 282
25.9.1 MOUNTPROC3_NULL(过程0) 282
25.9.2 MOUNTPROC3_MNT(过程1) 282
25.9.3 MOUNTPROC3_DUMP(过程2) 283
25.9.4 MOUNTPROC3_UMNT(过程3) 283
25.9.5 MOUNTPROC3_UMNTALL(过程4) 283
25.9.6 MOUNTPROC3_EXPORT(过程5) 283
25.10 NFS和安装鉴别 283
25.11文件加锁 284
25.12 NFS第3版与第4版之间的变化 284
25.13小结 285
深入研究 285
习题 285
第26章 TELNET客户(程序结构) 287
26.1引言 287
26.2概述 287
26.2.1用户终端 287
26.2.2命令和控制信息 287
26.2.3终端、窗口和文件 288
26.2.4对并发性的需要 288
26.2.5 TELNET客户的过程模型 288
26.3 TELNET客户算法 289
26.4 Linux中的终端I/O 289
26.4.1控制设备驱动器 291
26.5建立终端模式 291
26.6用于保存状态的全局变量 292
26.7在退出之前恢复终端模式 293
26.8客户挂起与恢复 294
26.9有限状态机的规约 295
26.10在TELNET数据流中嵌入命令 296
26.11选项协商 296
26.12请求/提供的对称性 297
26.13 TELNET字符定义 297
26.14针对来自服务器数据的有限状态机 298
26.15在各种状态之间转移 299
26.16有限状态机的实现 300
26.17压缩的有限状态机表示 300
26.18在运行时维持压缩表示 302
26.19压缩表示的实现 302
26.20构造有限状态机转移矩阵 304
26.21套接字输出有限状态机 305
26.22套接字输出有限状态机的相关定义 306
26.23选项子协商有限状态机 307
26.24选项子协商有限状态机的相关定义 308
26.25有限状态机初始化 309
26.26 TELNET客户的参数 310
26.27 TELNET客户的核心 311
26.28主有限状态机的实现 314
26.29小结 315
深入研究 315
习题 316
第27章 TELNET客户(实现细节) 317
27.1引言 317
27.2有限状态机动作过程 317
27.3记录选项请求的类型 317
27.4完成空操作 318
27.5对回显选项的WILL/WONT做出响应 318
27.6对未被支持的选项的WILL/WONT做出响应 320
27.7对no go-ahead选项的WILL/WONT做出响应 320
27.8生成用于二进制传输的DO/DONT 321
27.9对未被支持的选项的DO/DONT做出响应 322
27.10对传输二进制选项的DO/DONT做出响应 323
27.11对终端类型选项的DO/DONT做出响应 324
27.12选项子协商 326
27.13发送终端类型信息 326
27.14终止子协商 328
27.15向服务器发送字符 328
27.16显示在用户终端上出现的传入数据 329
27.17使用termeap控制用户终端 332
27.18将数据块写到服务器 333
27.19与客户进程交互 334
27.20对非法命令做出响应 335
27.21脚本描述文件 335
27.22脚本描述的实现 336
27.23初始化脚本描述 336
27.24收集脚本文件名的字符 337
27.25打开脚本文件 338
27.26终止脚本描述 339
27.27打印状态信息 340
27.28小结 341
深入研究 341
习题 342
第28章 流式音频和视频传输(RTP概念和设计) 343
28.1引言 343
28.2流式传输服务 343
28.3实时交付 343
28.4抖动的协议补偿 343
28.5重传、丢失和恢复 344
28.6实时传输协议 344
28.7流的转换和混合 345
28.8迟延回放和抖动缓存 346
28.9 RTP控制协议(RTCP) 346
28.10多种流同步 347
28.11 RTP传输和多对多传输 348
28.12会话、流、协议端口和分用 349
28.13编码的基本方法 350
28.14 RTP软件的概念性组织 350
28.15进程/线程结构 351
28.16 API的语义 352
28.17抖动缓存的设计和重新缓存 353
28.18事件处理 354
28.19回放异常及时间戳的复杂性 354
28.20实时库例子的大小 354
28.21 MP3播放器的例子 355
28.22小结 355
深入研究 356
习题 356
第29章 流式音频和视频传输(RTP实现示例) 357
29.1引言 357
29.2集成实现 357
29.3程序结构 357
29.4 RTP定义 358
29.5时间值的处理 361
29.6 RTP序列空间的处理 362
29.7 RTP分组队列的处理 363
29.8 RTP输入处理 365
29.9为RTCP保存统计信息 367
29.10 RTP初始化 368
29.11 RTCP的定义 372
29.12接收RTCP发送方的报告 373
29.13产生RTCP接收方的报告 374
29.14创建RTCP的首部 376
29.15 RTCP时延的计算 376
29.16 RTCP Bye(再见)报文的产生 377
29.17集成实现的大小 378
29.18小结 378
深入研究 378
习题 379
第30章 Linux服务器中的实用技巧和技术 380
30.1引言 380
30.2后台操作 380
30.3编写在后台运行的服务器 381
30.4打开描述符和继承 382
30.5对服务器编程以关闭所继承的描述符 382
30.6来自控制TTY的信号 382
30.7对服务器编程以改变它的控制TTY 382
30.8转移到一个安全的和已知的目录 383
30.9对服务器编程以改变目录 383
30.10 Linux umask 383
30.11对服务器编程以设置其umask 384
30.12进程组 384
30.13对服务器编程以设置其进程组 384
30.14标准I/O描述符 384
30.15对服务器编程以打开标准描述符 385
30.16服务器互斥 385
30.17对服务器编程以避免多个副本 385
30.18记录服务器的进程ID 386
30.19对服务器编程以记录其进程ID 386
30.20等待一个子进程退出 386
30.21对服务器编程以等待每个子进程退出 387
30.22外来信号 387
30.23对服务器编程以忽略外来信号 387
30.24使用系统日志设施 387
30.24.1产生日志报文 387
30.24.2间接方式和标准差错的优点 388
30.24.3 I/O重定向的限制 388
30.24.4客户-服务器的解决方案 388
30.24.5 syslog机制 389
30.24.6 syslog的报文类 389
30.24.7 syslog的设施 389
30.24.8 syslog的优先级 389
30.24.9使用syslog 390
30.24.10 syslog配置文件举例 390
30.25小结 391
深入研究 392
习题 392
第31章 客户-服务器系统中的死锁和资源缺乏 393
31.1引言 393
31.2死锁的定义 393
31.3死锁检测的难度 393
31.4避免死锁 394
31.5客户和服务器间的死锁 394
31.6在单个交互中避免死锁 395
31.7一组客户和一个服务器之间的资源缺乏 395
31.8忙连接和资源缺乏 395
31.9避免阻塞的操作 396
31.10进程、连接和其他限制 396
31.11客户和服务器的循环 397
31.12用文档确认依赖性 397
31.13小结 398
习题 398
附录1 系统调用与套接字使用的库例程 400
附录2 Linux文件和套接字描述符的操作 422
参考文献 425
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《全国职业院校工业机器人技术专业规划教材 工业机器人现场编程》(中国)项万明 2019
- 《编程超有趣 奇妙Python轻松学 第1辑》HelloCode人工智能国际研究组 2018
- 《我的第一套编程启蒙绘本 看事件 开始了》编程猫教研团队编绘 2019
- 《STEM教育丛书 麦昆机器人和Micro:bit图形化编程》张弛责任编辑;(中国)陈宝杰,沙靓雯 2019
- 《ROS机器人编程与SLAM算法解析指南》陶满礼 2020
- 《我的第一套编程启蒙绘本 123 序列来啦》编程猫教研团队编绘 2019
- 《高等院校计算机任务驱动教改教材 C语言编程思维 第2版》(中国)陈萌,鲍淑娣 2019
- 《我的第一套编程启蒙绘本 咦 什么在 循环》编程猫教研团队编绘 2019
- 《工业机器人离线编程与仿真》张明文,封家诚,王鑫主编 2019
- 《断陷湖盆比较沉积学与油气储层》赵永胜等著 1996
- 《SQL与关系数据库理论》(美)戴特(C.J.Date) 2019
- 《魔法销售台词》(美)埃尔默·惠勒著 2019
- 《看漫画学钢琴 技巧 3》高宁译;(日)川崎美雪 2019
- 《优势谈判 15周年经典版》(美)罗杰·道森 2018
- 《社会学与人类生活 社会问题解析 第11版》(美)James M. Henslin(詹姆斯·M. 汉斯林) 2019
- 《海明威书信集:1917-1961 下》(美)海明威(Ernest Hemingway)著;潘小松译 2019
- 《迁徙 默温自选诗集 上》(美)W.S.默温著;伽禾译 2020
- 《上帝的孤独者 下 托马斯·沃尔夫短篇小说集》(美)托马斯·沃尔夫著;刘积源译 2017
- 《巴黎永远没个完》(美)海明威著 2017
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017