Linux/UNIX网络编程

-
【作 者】甘刚 主编
【I S B N 】978-7-5084-5467-2
【责任编辑】张玉玲
【适用读者群】本科
【出版时间】2008-07-01
【开 本】16开本
【装帧信息】平装(光膜)
【版 次】2008年07月第1版
【页 数】248
【千字数】
【印 张】
【定 价】¥26
【丛 书】21世纪高职高专计算机科学规划教材
【备注信息】
简介
本书特色
前言
章节列表
精彩阅读
下载资源
相关图书
本书详细介绍了在Unix系统下基于TCP/IP网络套接口的基本编程方法,包括迭代与并发服务器编写方法、进程与线程编程技术、I/O编程技术、IPv4与IPv6的兼容性、原始套接口、数据链路访问技术、广播与多播技术等。为满足教学实际需要,在本书最后一章,给出了Socket基本编程、服务器与单客户的连接处理、多进程服务器模板、多线程编写模板、线程专用数据TSD实现模板等5个实验指导。在本书编写过程中,编著者参阅了国内外同类书籍及各类报刊杂志,将精华思想应用到教学实践中,形成的教学成果与体会反映在书中。在书中相关章节,编者都至少列举一个完整的例子来说明问题,学习者将书中的基础实验做好,再通过相关章节中的实验进行验证,就可以学习高级Linux/UNIX编程了。
本书在编写上力求由简到繁、由浅入深和循序渐进,读者不但可以学会程序设计的基本知识、设计思想和方法,还可以学会网络程序设计的通用方法与步骤。本书适合作为高等院校计算机及相关专业学生的教材,也可作为广大计算机爱好者、网络研究人员和网络程序开发人员的自学参考书。
随着Internet的快速发展,使用UNIX和Linux作为服务器主机的系统越来越多,而因为这种操作系统的稳定性和安全性,也使得基于UNIX和Linux的应用服务越来越多。掌握基于UNIX和Linux环境的编程技术,已成为相关网络管理人员、网络应用程序开发人员和网络安全保障人员的必备技能。
本书特点:
本书在编写上力求由简到繁、由浅入深和循序渐进,读者不但可以学会程序设计的基本知识、设计思想和方法,还可以学会网络程序设计的通用方法与步骤。
本书中的每个知识点都是以简短的篇幅介绍其中最基本、最常用的内容。通过精心设计的一些编程实例,介绍程序设计的基本方法,避免枯燥和空洞,在不知不觉中使读者学会UNIX/Linux环境中的编程技术,从而激发读者对网络编程的兴趣。
本书内容安排:
本书详细介绍了在UNIX/Linux系统下基于TCP/IP网络套接口的基本编程方法,包括迭代与并发服务器编写方法、进程与线程编程技术、I/O编程技术、IPv4与IPv6的兼容性、原始套接口、数据链路访问技术、广播与多播技术等。本书每章后面都附有丰富的理论巩固题和上机实践题,有助于读者复习、巩固所学知识,以培养读者的实际编程能力。
此外,为满足教学中的实际需要,在本书最后一章还给出了Socket基本编程、服务器与单客户的连接处理、多进程服务器模板、多线程编写模板和线程专用数据TSD实现模板5个实验指导。
书中所用到的函数都是标准函数,可以在UNIX/Linux系统上运行,所有实例程序都已在UNIX/Linux中调试通过。
本书适用对象:
大中专院校相关专业学生。
高等职业技术院校相关专业学生。
计算机培训教师和学员。
计算机爱好者和相关技术人员。
在本书中,“注意”中所列的内容为学员容易混淆而在授课时教师需要特别澄清的概念和问题,“提示”中所列的内容是对实际操作有帮助的一些经验性的方法和技巧。
本书由甘刚任主编,闫丽丽、盛志伟参编。另外,参与本书部分章节编写的还有:文黎敏、王治国、冯强、曾德惠、许庆华、程亮、周聪、黄志平、胡松、邢永峰、邵军、边海龙、刘达因、赵婷、马鸿娟、侯桐、赵光明、李胜、李辉、侯杰、王红研、王磊、闫守红、康涌泉、李欢、蒋杼倩、王小东、张森、张正亮、宋利梅、何群芬、程瑶,在此向他们表示衷心的感谢。
由于作者水平所限,加之网络技术发展迅速,本教材的覆盖面广,书中错误和不妥之处在所难免,恳请广大读者批评指证。我们的联系方式:china_54@tom.com。
前言
第1章 TCP/IP简介 1
1.1 概述 1
1.1.1 基本的C/S服务模型 1
1.1.2 OSI模型和TCP/IP四层结构 2
1.2 IP协议介绍 3
1.2.1 IP数据报的格式 3
1.2.2 IP地址 4
1.2.3 子网掩码(subnet mask) 5
1.3 TCP协议介绍 6
1.3.1 TCP连接的建立与终止 7
1.3.2 TCP状态转换图 8
1.4 UDP协议 10
1.5 端口号 10
1.6 本章小结 10
1.7 实战检验 11
理论巩固 11
第2章 套接字编程简介 12
2.1 套接字基础 12
2.2 套接字的类型 13
2.3 套接字地址结构 13
2.3.1 IPv4套接字地址结构 13
2.3.2 IPv6套接字地址结构 14
2.3.3 两种套接字地址结构的比较 15
2.3.4 通用套接字地址结构 15
2.4 套接字基本函数 16
2.4.1 字节排序函数 16
2.4.2 字节操纵函数 17
2.4.3 IP地址转换函数 17
2.4.4 isfdtype()函数 19
2.5 值-结果参数 19
2.6 本章小结 20
2.7 实战检验 20
理论巩固 20
上机实战 21
第3章 基本TCP套接字编程 22
3.1 TCP套接字编程 22
3.1.1 socket()函数 23
3.1.2 connect()函数 24
3.1.3 bind()函数 25
3.1.4 listen()函数 27
3.1.5 accept()函数 28
3.1.6 数据传输函数 29
3.1.7 close()函数 31
3.2 TCP套接字编程实例 31
3.3 服务器的3种异常情况 35
3.3.1 服务器主机崩溃 36
3.3.2 服务器主机崩溃后重启 36
3.3.3 服务器主机关闭 37
3.4 本章小结 37
3.5 实战检验 38
理论巩固 38
上机实战 38
第4章 基本UDP套接口编程 39
4.1 UDP套接字编程 39
4.1.1 recvfrom()函数 40
4.1.2 sendto函数 41
4.2 UDP套接字编程实例 42
4.3 UDP中对数据报的各项处理 46
4.3.1 数据报的丢失 46
4.3.2 验证收到的响应 46
4.3.3 服务器进程未运行 47
4.4 connect函数用于UDP 47
4.5 本章小结 48
4.6 实战检验 49
理论巩固 49
上机实战 49
第5章 并发服务器 50
5.1 服务器的分类 50
5.2 多进程并发服务器 51
5.2.1 进程基础 51
5.2.2 进程创建 51
5.2.3 进程终止 54
5.2.4 多进程并发服务器 56
5.2.5 多进程并发服务器实例 57
5.3 多线程服务器 63
5.3.1 线程基础 64
5.3.2 线程基础函数 64
5.3.3 给新线程传递参数 66
5.3.4 多线程并发服务器实例 68
5.3.5 线程安全函数 72
5.3.6 线程安全实例 77
5.3.7 用函数参变量实现线程安全性 82
5.4 本章小结 85
5.5 实战检验 86
理论巩固 86
上机实战 86
第6章 名字与地址转换编程 87
6.1 概述 87
6.2 域名系统 87
6.3 gethostbyname()函数 88
6.4 RES_USE_INET6解析器选项 91
6.5 gethostbyname2函数对IPv6的支持 91
6.6 gethostbyaddr()函数 93
6.7 uname()函数 93
6.8 gethostname函数 94
6.9 getservbyname和getservbyport函数 95
6.10 getaddrinfo、gai_strerror和host_serv函数 96
6.11 freeaddrinfo函数 99
6.12 使用getaddrinfo的TCP和UDP 100
6.13 getnameinfo函数 105
6.14 gethostbyaddr实例 105
6.15 本章小结 106
6.16 实战检验 107
理论巩固 107
上机实战 107
第7章 IPv4和IPv6编程 108
7.1 IPv4客户与IPv6服务器 108
7.2 IPv6客户与IPv4服务器 110
7.3 IPv6_ADDRFORM套接口选项 111
7.4 IPv6地址测试宏 112
7.5 源代码的可移植性 112
7.6 本章小结 113
7.7 实战检验 113
理论巩固 113
上机实战 113
第8章 守护进程和inetd超级服务器 114
8.1 守护进程的原理 114
8.1.1 启动守护进程 114
8.1.2 输出守护进程消息 115
8.1.3 syslog函数 115
8.1.4 创建守护进程 118
8.1.5 以守护进程方式运行的时间服务器 119
8.2 inetd的工作原理 122
8.2.1 概念 122
8.2.2 工作流程 123
8.2.3 inetd处理并发 125
8.3 本章小结 125
8.4 实战检验 126
理论巩固 126
上机实战 126
第9章 I/O编程 127
9.1 I/O模型 127
9.2 select函数 130
9.3 shutdown函数 132
9.4 poll函数 133
9.5 使用select函数的TCP例子 135
9.6 高级的I/O编程 140
9.6.1 recv和send函数 140
9.6.2 recvmsg和sendmsg函数 141
9.7 非阻塞connect 143
9.8 ioctl函数 145
9.8.1 套接口操作 146
9.8.2 文件操作 146
9.8.3 接口配置 146
9.8.4 接口操作 147
9.8.5 ARP操作 148
9.8.6 路由表操作 148
9.9 本章小结 148
9.10 实战检验 149
理论巩固 149
上机实战 149
第10章 广播与多播编程 150
10.1 广播的概念 150
10.1.1 广播的原理 150
10.1.2 广播的示例 152
10.2 多播概念 155
10.2.1 多播与广播的比较 155
10.2.2 多播套接口选项 156
10.2.3 多播的实例 157
10.3 本章小结 159
10.4 理论与巩固 159
实战检验 159
上机实战 159
第11章 路由套接口编程 160
11.1 概念和数据链路套接口地址结构 160
11.2 sysctl操作 165
11.3 接口名和索引函数 166
11.4 本章小结 167
11.5 实战检验 168
理论与巩固 168
上机实战 168
第12章 信号量编程 169
12.1 信号的概念 169
12.2 信号的概念及常见信号介绍 169
12.2.1 signal函数 173
12.2.2 处理SIGCHLD信号 174
12.2.3 wait和waitpid函数 175
12.2.4 kill和raise函数 177
12.2.5 SIGPIPE信号 178
12.2.6 alarm和pause函数 178
12.2.7 sigprocmask函数 179
12.2.8 sigpending函数 179
12.2.9 sigaction函数 179
12.2.10 sigsetjmp和siglongjmp函数 180
12.2.11 sigsuspend函数 180
12.2.12 abort函数 181
12.2.13 system函数 181
12.2.14 sleep函数 182
12.3 例子:使用SIGIO的UDP回射服务器程序 183
12.4 本章小结 188
12.5 实战检验 188
理论巩固 188
上机实战 188
第13章 原始套接口与数据链路访问编程 189
13.1 原始套接口创建 189
13.2 原始套接口输出 190
13.3 原始套接口输入 191
13.4 原始套接字编程实例 191
13.4.1 实例1:拒绝服务攻击 191
13.4.2 实例2:ICMP包的构建、发送和接收 194
13.4.3 实例3:ping程序 197
13.5 数据链路层访问 202
13.5.1 BPF:BSD分组过滤器 203
13.5.2 数据链路提供者DLPI 203
13.5.3 Linux的SOCK_PACKET 204
13.5.4 分组捕获函数库libpcap 204
13.5.5 libpcap的库函数 205
13.5.6 数据链路层访问实例 209
13.6 本章小结 213
13.7 理论与巩固 214
实战检验 214
上机实战 214
第14章 实验指导 215
14.1 Socket基本编程 215
14.2 服务器与单客户的连接处理 218
14.3 多进程服务器模板 221
14.4 多线程编写模板 226
14.5 线程专用数据TSD实现模板 230
参考文献 236
- Linux服务器构建与运维管理从基础到实战(基于openEuler) [阮晓龙 冯顺磊 杜宇飞 刘明哲]
- Linux服务器配置与管理项目教程(微课版)(第2版) [主 编 宋丽娜 常丽媛 蒋一锄]
- Linux操作系统基础 [宋焱宏 张勇]
- Linux服务器构建与运维管理从基础到实战(基于CentOS 8实现) [阮晓龙 冯顺磊 董凯伦 于冠军]
- Linux服务器配置与管理项目教程(微课版) [赵良涛 姜猛 肖川 杨云]
- Linux操作系统配置与管理项目化教程 [主编 白玉羚 刘金明 王鹏]
- Linux服务器配置与安全管理 [李贺华 李腾]
- Linux操作系统基础及实验指导教程 [主编 黄卫东 张岳 史士英]
- Linux服务器配置与管理 [唐宏 杨智勇]
- 嵌入式Linux开发技术基础 [主编 伍德雁]
- Linux网络服务与Shell脚本攻略 [主编 肖睿 江骏]
- Linux系统管理 [主编 肖睿]
- Linux基础及应用教程(第二版) [主编 梁建武]
- Linux系统与应用 [刘兰青 王飞]
- Linux服务器配置与管理实训教程 [伍技祥]
- Linux网络服务器配置管理项目实训教程(第二版) [杨云 运永顺 和乾]
- Linux操作系统的应用与管理项目化教程 [邹承俊 周洪林]
- Linux操作系统配置与管理 [严学军 鲁立]
- Linux/Android开发利器——ARM DS-5使用指南 [崔更申 秦兴国]
- Visual C++网络编程技术 [延霞]
- Windows网络程序设计完全讲义 [高守传 周书锋]
- Linux体系与编程——基于Linux 0.01版本 [主编 卢军 曾茂城]
- Linux网络服务器配置管理项目实训教程 [杨云 马立新 杨建新 编著]
- Linux操作系统应用与安全 [李贺华 主编]
- Linux基础及应用教程实验指导与实训 [郭迎 梁建武 等主编]
- 游戏中的网络编程技术及应用 [樊永庆 黄国荣 周滨航 等编著]
- Linux实用教程 [刘兵 吴煜煌 等编著]
- 操作系统原理及应用(Linux) [王红 主编]
- 操作系统实训(Linux)--习题解答、例题解析、实验指导 [王红 主编]
- Red Hat Enterprise Linux 5基础教程 [王路群 主编]