编辑推荐
《Linux/UNIX网络编程》在编写上力求由简到繁、由浅入深和循序渐进,读者不但可以学会程序设计的基本知识、设计思想和方法,还可以学会网络程序设计的通用方法与步骤。《Linux/UNIX网络编程》适合作为高等院校计算机及相关专业学生的教材,也可作为广大计算机爱好者、网络研究人员和网络程序开发人员的自学参考书。
《Linux/UNIX网络编程》配有免费电子教案,读者可以从中国水利水电出版社网站上下载,网址为:
培养学生实际动手能力,加大了实战检验的比重。教材体系合理,展现了高校计算机教育教学改革的最新科研成果。
采用“案例引导,任务驱动”的编写方式,便于激发学习兴趣。
教学资源丰富,提供电子教案和程序源代码。
内容简介
本书详细介绍了在UNIX/Linux系统下基于TCP/IP网络套接口的基本编程方法,包括迭代与并发服务器编写方法、进程与线程编程技术、I/O编程技术、IPv4与IPv6的兼容性、原始套接口、数据链路访问技术、广播与多播技术等。为满足教学实际需要,在本书最后一章给出了Socket基本编程、服务器与单客户的连接处理、多进程服务器模板、多线程编写模板和线程专用数据TSD实现模板5个实验指导。在本书编写过程中,编者参阅了国内外同类书籍及各类报刊杂志,将精华思想应用到教学实践中,形成的教学成果与体会反映在书中。在书中相关章节,编者都至少列举一个完整的例子来说明问题,学习者将书中的基础实验做好,再通过相关章节中的实验进行验证,就可以学习高级Linux/UNIX编程了。
本书在编写上力求由简到繁、由浅入深和循序渐进,读者不但可以学会程序设计的基本知识、设计思想和方法,还可以学会网络程序设计的通用方法与步骤。本书适合作为高等院校计算机及相关专业的教材,也可作为广大计算机爱好者、网络研究人员和网络程序开发人员的自学参考书。
内页插图
目录
序
前言
第1章 TCP/IP简介
1.1 概述
1.1.1 基本的C/S服务模型
1.1.2 OSI模型和TCP/IP四层结构
1.2 IP协议介绍
1.2.1 IP数据报的格式
1.2.2 IP地址
1.2.3 子网掩码(subnet mask)
1.3 TCP协议介绍
1.3.1 TcP连接的建立与终止
1.3.2 TcP状态转换图
1.4 UDP协议
1.5 端口号
1.6 本章小结
1.7 实战检验
理论巩固
第2章 套接字编程简介
2.1 套接字基础
2.2 套接字的类型
2.3 套接字地址结构
2.3.1 IPv4套接字地址结构
2.3.2 IPv6套接字地址结构
2.3.3 两种套接字地址结构的比较
2.3.4 通用套接字地址结构
2.4 套接字基本函数
2.4.1 字节排序函数
2.4.2 字节操纵函数
2.4.3 IP地址转换函数
2.4.4 isfdtype()函数
2.5 值结果参数
2.6 本章小结
2.7 实战检验
理论巩固
上机实战
第3章 基本TCP套接字编程
3.1 TCP套接字编程
3.1.1 socket()1函数
3.1.2 connect()函数
3.1.3 bind()函数
3.1.4 listen()函数
3.1.5 accept()函数
3.1.6 数据传输函数
3.1.7 close()函数
3.2 TCP套接字编程实例
3.3 服务器的3种异常情况
3.3.1 服务器主机崩溃
3.3.2 服务器主机崩溃后重启
3.3.3 服务器主机关闭
3.4 本章小结
3.5 实战检验
理论巩固
上机实战
第4章 基本UDP套接口编程
4.1 UDP套接字编程
4.1.1 recvfrom()函数
4.1.2 sendto函数
4.2 UDP套接字编程实例
4.3 UDP中对数据报的各项处理
4.3.1 数据报的丢失
4.3.2 验证收到的响应
4.3.3 服务器进程未运行
4.4 connect函数用于UDP
4.5 本章小结
4.6 实战检验
理论巩固
上机实战
第5章 并发服务器
5.1 服务器的分类
5.2 多进程并发服务器
5.2.1 进程基础
5.2.2 进程创建
5.2.3 进程终止
5.2.4 多进程并发服务器
5.2.5 多进程并发服务器实例
5.3 多线程服务器
5.3.1 线程基础
5.3.2 线程基础函数
5.3.3 给新线程传递参数
5.3.4 多线程并发服务器实例
5.3.5 线程安全函数
5.3.6 线程安全实例
5.3.7 用函数参变量实现线程安全性
5.4 本章小结
5.5 实战检验
理论巩固
上机实战
第6章名宇与地址转换编程
6.1 概述
6.2 域名系统
6.3 gethostbyname()函数
6.4 RES USE INET6解析器选项
6.5 gethostbyname2函数对IPv6的支持
6.6 gethostbyaddr()函数
6.7 uname()函数
6.8 gethostname函数
6.9 getservbyname和getservbyport函数
6.10 getaddrinfo、gai strerror和host—serv函数
6.11 freeaddrinfo函数
6.12 使用getaddrinfo的TCP和UDP
6.13 gemameinfo函数
6.14 gethostbyaddr实例
6.15 本章小结
6.16 实战检验
理论巩固
上机实战
第7章 IPv4和IPv6编程
7.1 IPv4客户与IPv6服务器
7.2 IPv6客户与IPv4服务器
7.3 IPv6 ADDRFORM套接口选项
7.4 IPv6地址测试宏
7.5 源代码的可移植性
7.6 本章小结
7.7 实战检验
理论巩固
上机实战
第8章 守护进程和inetd超级服务器
8.1 守护进程的原理
8.1.1 启动守护进程
8.1.2 输出守护进程消息
8.1.3 syslog函数
8.1.4 创建守护进程
8.1.5 以守护进程方式运行的时间服务器
8.2 inetd的工作原理
8.2.1 概念
8.2.2 工作流程
8.2.3 inetd处理并发
8.3 本章小结
8.4 实战检验
理论巩固
上机实战
第9章 I/O编程
9.1 I/O模型
9.2 select函数
9.3 shutdown函数
9.4 poll函数
9.5 使用select函数的TCP例子
9.6 高级的I/O编程
9.6.1 recv和send函数
9.6.2 recvmsg和sendmsg函数
9.7 非阻塞connect
9.8 ioctl函数
9.8.1 套接口操作
9.8.2 文件操作
9.8.3 接口配置
9.8.4 接口操作
9.8.5 ARP操作
9.8.6 路由表操作
9.9 本章小结
9.10 实战检验
理论巩固
上机实战
第10章 广播与多播编程
10.1 广播的概念
10.1.1 广播的原理
10.1.2 广播的示例
10.2 多播概念
10.2.1 多播与广播的比较
10.2.2 多播套接口选项
10.2.3 多播的实例
10.3 本章小结
10.4 理论与巩固
实战检验
上机实战
第11章 路由套接口编程
11.1 概念和数据链路套接口地址结构
11.2 sysctl操作
11.3 接口名和索引函数
11.4 本章小结
11.5 实战检验
理论与巩固
上机实战
第12章 信号量编程
12.1 信号的概念
12.2 信号的概念及常见信号介绍
12.2.1 signal函数
12.2.2 处理SIGCHLD信号
12.2.3 wait和waitpid函数
12.2.4 kill和raise函数
12.2.5 SIGPIPE信号
12.2.6 alarm和pause函数
12.2.7 sigprocmask函数
12.2.8 sigpending函数
12.2.9 sigaction函数
12.2.10 sigsecjmp和siglongjmp函数
12.2.1l sigsuspend函数
12.2.12 abort函数
12.2.13 system函数
12.2.14 sleep函数
12.3 例子:使用SIGIO的uDP回射服务器程序
12.4 本章小结
12.5 实战检验
理论巩固
上机实战
第13章 原始套接口与数据链路访问编程
13.1 原始套接口创建
13.2 原始套接口输出
13.3 原始套接口输入
13.4 原始套接字编程实例
13.4.1 实例1:拒绝服务攻击
13.4.2 实例2:ICMP包的构建、发送和接收
13.4.3 实例3:ping程序
13.5 数据链路层访问
13.5.1 BPF BSD分组过滤器
13.5.2 数据链路提供者DLPI
13.5.3 Unux的SOCK PACKET
13.5.4 分组捕获函数库libpcap
13.5.5 libpcap的库函数
13.5.6 数据链路层访问实例
13.6 本章小结
13.7 理论与巩固
实战检验
上机实战
第14章 实验指导
14.1 Socket基本编程
14.2 服务器与单客户的连接处理
14.3 多进程服务器模板
14.4 多线程编写模板
14.5 线程专用数据TSD实现模板
参考文献
精彩书摘
第1章 TCP/IP简介
1.1 概述
1.1.1 基本的C/S服务模型
网络编程是指编写的网络通信程序可以与网络上的其他程序进行通信。相互通信的网络程序通常可以分为两部分:客户端(Client)和服务器端(Server)。在图中给出了一个最简单的C/S服务模型。
在此模型中,客户和服务器之间采用的是一对一的关系,即客户一次只与一个服务器通信。当然一个客户同时与多个服务器进行通信,一个服务器同时与多个客户通信的情况也存在。以最常用到的使用Web浏览器浏览网页为例,IE浏览器在这里就是客户端,而远程提供信息的服务器就是服务器端,可以在5分钟内与许多不同的Web服务器通信;反之从服务器的角度来看,一台Web服务器也可以同时处理多个客户的请求。
对刚开始学习网络编程的读者来说,当第一次看到对C/S服务模型的介绍时,可能对它的理解就只是图中所描述的逻辑关系(一端享受服务,一端提供服务)而已,而并不是非常清楚用户数据和服务器的数据是怎么完成相互传递的。
前言/序言
随着计算机科学与技术的发展,计算机应用已经渗透到人们生活、工作和学习的方方面面,从而日益改变着人类传统的工作与生活方式。这就要求当代大学生在校学习期间就应储备更多的计算机专业知识。
为了大力推广计算机应用技术,更好地适应当前高等院校计算机教育模式的转变,我们组织一批学术水平较高、教学经验丰富、实践能力较强的学术带头人、科研人员和从事相关课程教学的主要骨干教师,对当前国内外高等院校计算机教育的教学现状与发展趋势、新形势下如何加强高等院校的教材建设等问题进行了深入的研究和探讨,并成立了“21世纪高等院校计算机科学规划教材”编委会,在明确了高校的人才培养模式、培养目标和课程体系的框架下,组织编写了本套“21世纪高等院校计算机科学规划教材”。
本套教材具有以下显著特色:
(1)充分体现了计算机教育教学第一线的需要。在编写之初,编委会经过大量的前期调研和策划,广泛地了解各高等院校的教学现状、市场需求,研讨了课程设置、课程体系,拟定了相关的知识单元和知识点,充分听取了教学第一线教师对计算机教育的意见,使本套教材充分反映了老师们的需求。
(2)各高校计算机院(系)院长(主任)对本套教材的建设十分重视,热情鼓励教师积极参与编写,充分展现了各个高校在计算机教育教学改革中取得的最新教研成果。
(3)本套教材在内容安排上既注重内容的全面性,也充分考虑了不同学科、不同专业对计算机知识的不同需求的特殊性。
(4)本套教材为了充分调动学生分析问题、解决问题的积极性,以及锻炼学生的实际动手能力,在全书中大力增加了实践检验所占的比重。
(5)力求实践性强是本套教材的一大特色,通过案例教学,将最急需、最实用的计算机知识传授给学生。
为进一步体现实用性,本配套教材在编写时配有课程学习辅导、实验指导、综合实训、电子教案等,以使教材向多元化、多媒体化发展,满足广大教师的教学需要。
总之,本套教材凝聚了众多长期工作在教学、科研第一线的教师及科研人员的教学科研成果、教学经验和智慧,在写法上体现了理论与实践相结合,相关的知识点讲解清晰、透彻,注重教学实践,力求科学实用,符合教学习惯。语言通俗易懂,内容丰富翔实,既有对基本理论及使用方法的透彻讲解,又注重实例与技巧的融会贯通。这套教材是新形势下计算机教育改革的一种新的尝试,“新”就会有许多值得修改的地方。我们期待广大读者对本套规划教材提出宝贵意见,以便进一步修订,使本套规划教材不断完善和提高。
Linux/UNIX网络编程/21世纪高等院校计算机科学规划教材 电子书 下载 mobi epub pdf txt