本书为普通高等教育“十一五”国家级规划教材。本书以当前主流操作系统UNIX为背景,由浅入深地介绍了UNIX环境下计算机通信程序设计的原理与方法。全书内容分为四篇,第一篇网络基础(第1章、第2章),包括UNIX系统的基础知识和TCP/IP基础;第二篇套接字(第3~5章),包括套接字基础、TCP套接字和UDP套接字;第三篇UNIX网络编程实用技术(第6~9章),包括并发服务器、名字解析和IP地址转换、同步及进程间通信和异常处理;第四篇高级网络编程技术(第10~15章),包括IPv4和IPv6的互操作性、守护进程、广播、多播、原始套接字和路由套接字。
本书内容紧凑、深浅适宜、兼顾实用,各章均有实例和习题,适合作为高等院校计算机科学与技术、通信工程、电子信息和软件工程等专业本科生或研究生的教材,也可作为从事相关专业的工程技术人员的参考书。
样章试读
目录
- 第一篇 网络基础
第1章 UNIX系统基础
1.1 UNIX系统概述
1.1.1 UNIX操作系统的发展史
1.1.2 UNIX系统的体系结构
1.1.3 UNIX系统的目录结构
1.1.4 UNIX系统的特点
1.2 常用UNIX网络命令
1.3 网络基本配置文件
1.4 软件开发环境
1.4.1 vi编辑器
1.4.2 GCC编译器
1.4.3 GDB调试器
1.4.4 GDB功能简介
1.5 小结
1.6 思考与练习
第2章 TCP/IP基础与原理
2.1 TCP/IP体系
2.2 IP协议
2.2.1 IPv4数据包结构
2.2.2 IP地址
2.2.3 IPv6的发展及其特点
2.3 ICMP协议
2.4 IP路由
2.5 TCP协议
2.5.1 TCP数据报文结构
2.5.2 建立和拆除TCP连接
2.6 UDP协议
2.7 端口号分配
2.8 小结
2.9 思考与练习
第二篇 套接字
第3章 套接字基础
3.1 套接字概述
3.1.1 Socket历史
3.1.2 Socket功能
3.2 套接字类型
3.2.1 流式套接字(SOCK_STREAM)
3.2.2 数据报套接字(SOCK_DGRAM)
3.2.3 原始套接字
3.2.4 SEQ套接字
3.2.5 RDM套接字
3.3 套接字地址结构
3.4 端口
3.4.1 简介
3.4.2 常用网络服务端口
3.5 带外数据
3.5.1 TCP的带外数据
3.5.2 程序实例
3.6 连接类型
3.7 小结
3.8 思考与练习
第4章 TCP套接字
4.1 基本方法
4.1.1 TCP套接字实现过程
4.1.2 TCP服务器模板
4.1.3 TCP客户模板
4.2 实现TCP套接字
4.2.1 产生TCP套接字
4.2.2 绑定
4.2.3 监听
4.2.4 接受请求
4.2.5 连接建立
4.2.6 数据传输
4.2.7 终止连接
4.3 TCP套接字编程实例
4.3.1 实例说明
4.3.2 程序实例
4.4 小结
4.5 思考与练习
第5章 UDP套接字
5.1 基本方法
5.1.1 UDP套接字实现过程
5.1.2 UDP服务器模板
5.1.3 UDP客户模板
5.2 函数说明
5.2.1 UDP套接字的数据发送函数sendto()
5.2.2 UDP套接字的数据接收函数recvfrom()
5.3 UDP套接字编程实例
5.4 小结
5.5 思考与练习
第三篇 UNIX网络编程实用技术
第6章 并发服务器
6.1 并发服务器概述
6.1.1 服务器的分类
6.1.2 迭代服务器实例
6.1.3 并发技术
6.1.4 并发服务器算法
6.2 多进程服务器
6.2.1 进程概念与特征
6.2.2 创建进程
6.2.3 终止进程
6.2.4 多进程并发服务器
6.2.5 多进程并发服务器实例
6.2.6 多进程服务器的问题
6.3 多线程服务器
6.3.1 线程基础
6.3.2 线程函数调用
6.3.3 多线程并发服务器
6.3.4 给新线程传递参数
6.3.5 多线程并发服务器实例
6.3.6 线程安全实例
6.4 I/O多路复用服务器
6.4.1 I/O模式
6.4.2 select()函数
6.4.3 单线程并发服务器
6.5 套接字终止处理
6.6 小结
6.7 思考与练习
第7章 名字解析和IP地址转换
7.1 名字解析
7.2 套接字地址
7.2.1 概述
7.2.2 套接字属性
7.2.3 地址结构
7.2.4 字节顺序
7.2.5 字节顺序转换函数
7.2.6 IP地址转换函数
7.2.7 套接字地址信息函数
7.3 套接字信息函数
7.3.1 主机名转换为IP地址:gethostbyname()函数
7.3.2 IP地址转换为主机名:gethostbyaddr()函数
7.3.3 获得服务器端口号:getservbyname()函数
7.3.4 端口号转换为服务名:getservbyport()函数
7.4 小结
7.5 思考与练习
第8章 同步及进程间通信
8.1 线程同步
8.1.1 线程同步基础
8.1.2 互斥锁
8.1.3 加锁和解锁互斥锁
8.1.4 条件变量
8.1.5 同步线程退出
8.1.6 死锁
8.2 进程同步
8.2.1 进程同步的基本概念
8.2.2 进程关系
8.2.3 信号处理
8.2.4 有关信号的系统调用
8.2.5 信号机制
8.2.6 信号与系统调用的关系
8.2.7 信号的复位
8.2.8 处理僵死进程
8.3 进程间通信
8.3.1 管道
8.3.2 FIFO
8.3.3 未提到的关于有名管道的一些注意事项
8.3.4 消息队列
8.3.5 共享内存
8.3.6 信号量
8.4 小结
8.5 思考与练习
第9章 异常处理
9.1 异常处理基础
9.2 函数调用的错误
9.2.1 显示错误信息
9.2.2 定义错误处理函数
9.3 I/O超时处理
9.3.1 alarm()函数
9.3.2 select()函数
9.4 服务器和客户异常处理
9.5 小结
9.6 思考与练习
第四篇 高级网络编程技术
第10章 IPv4和IPv6的互操作性
10.1 概述
10.2 IPv4客户和IPv6服务器
10.3 IPv6客户和IPv4服务器
10.4 IPv6地址测试宏
10.5 IPv6_ADDRFORM套接口选项
10.6 源代码的可移植性
10.7 小结
10.8 思考与练习
第11章 守护进程
11.1 守护进程及其消息输出
11.1.1 syslogd守护进程
11.1.2 syslog函数
11.1.3 实例演练
11.2 守护进程的创建
11.2.1 进程的建立
11.2.2 调用setsid函数
11.2.3 实例演练
11.3 守护进程的相关配置
11.3.1 配置文件
11.3.2 环境变量
11.4 守护进程的应用实例
11.5 小结
11.6 思考与练习
第12章 广播
12.1 广播的概述
12.2 广播地址
12.3 单播和广播的比较
12.4 dg_cli函数的修改
12.5 小结
12.6 思考与练习
第13章 多播
13.1 多播的概述
13.2 多播地址
13.3 多播和广播的比较
13.4 广域网上的多播
13.5 多播套接口选项
13.6 发送和接收
13.7 简单网络时间协议SNTP
13.8 小结
13.9 思考与练习
第14章 原始套接字
14.1 创建原始套接字
14.1.1 创建方法
14.1.2 实例演练
14.2 写原始套接字
14.2.1 原始套接字的写操作
14.2.2 实例演练
14.3 读原始套接字
14.3.1 原始套接字的读操作
14.3.2 实例演练
14.4 原始套接字程序实例
14.5 小结
14.6 思考与练习
第15章 路由套接字
15.1 创建路由套接字
15.1.1 数据链路套接字地址结构
15.1.2 创建路由套接字
15.1.3 实例演练
15.2 写路由套接字
15.2.1 路由套接字的写操作
15.2.2 实例演练
15.3 读取路由套接字
15.3.1 路由套接字的读操作
15.3.2 实例演练
15.4 路由套接字实例
15.5 小结
15.6 思考与练习
参考文献