《Unix网络编程实用技术与实例分析》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:张炯编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2002
  • ISBN:7302058911
  • 页数:347 页
图书介绍:本书详细介绍了在Unix环境下网络编程的方法,全书分为四部分:第一部分“网络基础”主要讲述TCP/IP协议簇,尤其是与编程相关的部分,并说明了网络编程环境:第二部分“套接字”是网络编程的核心,在此通过讲解套接字库函数、TCP套接字、UDP套接字及相应的实例,使读者能够编写基本的网络程序:第三部分“Unix网络编程实用技术”是本书的重点,讲述Unix网络开发过程中常用的技术,如并发服务器技术、名字和IP地址转换、同步及进程间通信技术、异常处理技术、实用套接字类库的创建,说明如何提高软件的性能、可靠性和可扩充性,并配有大量实例予以说明;第四部分“高级网络编程”主要涉及底层IP编程技术,可用于路由器、网络监视器及专用协议的开发,介绍了守护进程、原始套接宇、数据链路访问、多接日捆绑及路由套接字技术。本书涉及的内容包括Unix系统、网络协议及编程技术,并由浅入深地讲述了网络编程核心技术、实用技术和高级网络编程。本书既是从事网络开发人员的参考资料,也可以作为学习Unix网络编程知识的教材。

第一部分 网络基础 1

第1章 Unix系统基础 1

1.1 Unix系统概述 1

1.1.1 Unix系统的历史 1

1.1.2 Unix系统的特点 1

1.1.3 Unix系统的体系结构 1

1.1.4 Unix系统的地址空间 2

1.1.5 POSIX标准 2

1.2 常用Unix网络命令 2

1.2.1 ping 2

1.2.2 netstat 3

1.2.3 ifconfig 3

1.2.5 tcpdump 4

1.2.4 route 4

1.3 网络基本配置文件 5

1.4 软件开发环境 5

1.4.1 vi编辑器 5

1.4.2 gcc编译器 7

1.4.3 gdb调试器 7

1.5 简单实例 8

1.5.1 源程序分析 8

1.5.2 实现过程 10

1.6 小结 12

第2章 TCP/IP 13

2.1 TCP/IP体系 13

2.2 IP协议 14

2.2.1 IP包的结构 14

2.2.4 IP地址类型 15

2.2.3 IP地址表示 15

2.2.2 IP地址组成 15

2.2.5 子网掩码 16

2.3 TCP协议 16

2.3.1 建立TCP连接 16

2.3.2 关闭TCP连接 16

2.3.3 TCP数据包结构 17

2.4 UDP协议 17

2.5 ICMP协议 18

2.6 端口号分配 19

2.6.1 端口分类 19

2.6.2 常用端口号 19

2.7.1 路由表分类 20

2.7.2 IP路由过程 20

2.7 IP路由 20

2.8 小结 21

第二部分 套接字 22

第3章 套接字基础 22

3.1 套接字概述 22

3.2 套接字类型 23

3.3 套接字地址结构 23

3.3.1 INET协议簇地址结构sockaddr_in 23

3.3.2 存储地址和端口信息的sockaddr 24

3.3.3 32位IPv4地址结构in_addr 24

3.4 端口 25

3.5 带外数据 26

3.6 连接类型 26

3.7 小结 27

4.1.1 TCP套接字实现过程 28

4.1 基本方法 28

第4章 TCP套接字 28

4.1.2 TCP服务器模板 29

4.1.3 TCP客户模板 30

4.2 实现TCP套接字 31

4.2.1 产生TCP套接字 31

4.2.2 绑定 32

4.2.3 监听 34

4.2.4 接受请求 35

4.2.5 连接建立 36

4.2.6 数据传输 38

4.2.7 终止连接 39

4.3 TCP套接字编程实例 40

4.3.1 实例说明 40

4.3.2 TCP服务器 40

4.3.3 TCP客户 42

4.3.4 运行程序 44

4.4 小结 45

第5章 UDP套接字 46

5.1 基本方法 46

5.1.1 UDP套接字实现过程 46

5.1.2 UDP服务器模板 47

5.1.3 UDP客户模板 48

5.2 函数说明 49

5.2.1 UDP套接字的数据发送——sendto()函数 49

5.2.2 UDP套接字的数据接收——recvfrom()函数 49

5.3 UDP套接字编程实例 51

5.3.1 UDP服务器 51

5.3.2 UDP客户 53

5.4 小结 55

5.3.3 运行程序 55

第三部分 Unix网络编程实用技术 57

第6章 并发服务器 57

6.1 并发服务器基础 57

6.1.1 服务器分类 57

6.1.2 重复性服务器实例 58

6.1.3 并发技术 64

6.1.4 并发服务器算法 64

6.2 多进程服务器 68

6.2.1 进程概念 68

6.2.2 创建进程 68

6.2.3 终止进程 70

6.2.4 多进程并发服务器 73

6.2.5 多进程并发服务器实例 77

6.3 多线程服务器 83

6.3.1 线程基础 84

6.3.2 线程函数调用(POSIX) 84

6.3.3 多线程并发服务器 87

6.3.4 给新线程传递参数 88

6.3.5 多线程并发服务器实例 92

6.3.6 线程安全(MT-safe)实例 96

6.4 I/O多路复用服务器 112

6.4.1 I/O模式 113

6.4.2 select()函数 114

6.4.3 单线程并发服务器实例 116

6.5 套接字终止处理 123

6.6 小结 124

7.2.1 地址结构 126

7.2 套接字地址 126

7.1 名字解析 126

第7章 名字和IP地址转换 126

7.2.2 字节顺序 127

7.2.3 IP地址转换函数 128

7.2.4 套接字地址信息函数 129

7.3 套接字信息函数 130

7.3.1 主机名转换为IP地址:gethostbyname()函数 130

7.3.2 IP地址转换为主机名:gethostbyaddr()函数 132

7.3.3 获得服务的端口号:getservbyname()函数 134

7.3.4 端口号转换为服务名:getservbyport()函数 135

7.4 小结 135

8.1.2 斥锁基础 136

8.1.1 线程同步基础 136

8.1 线程同步 136

第8章 同步及进程间通信 136

8.1.3 加锁和解锁互斥锁 138

8.1.4 条件变量 142

8.1.5 同步线程退出 151

8.1.6 死锁 158

8.2 进程同步 165

8.2.1 进程关系 165

8.2.2 信号处理 167

8.2.3 处理僵死进程 171

8.3 进程间通信 175

8.3.1 管道 176

8.3.2 FIFO 176

8.3.3 消息队列 180

8.3.4 共享内存 180

8.3.5 信号量 181

8.4 小结 182

第9章 异常处理 183

9.1 异常处理基础 183

9.2 函数调用的错误处理 183

9.2.1 显示错误信息 184

9.2.2 定义错误处理函数 187

9.3 I/O超时处理 188

9.3.1 使用alarm()函数 188

9.3.2 使用select函数 189

9.4 服务器异常处理 190

9.4.1 异常处理的系统调用 190

9.4.2 服务器异常处理实例 191

9.5 客户异常处理 196

9.6 小结 196

10.1.2 建立库文件索引 197

10.1.3 连接库文件 197

第10章 创建实用套接字类库 197

10.1.1 创建库文件 197

10.1 创建静态链接库 197

10.2 创建动态链接库 198

10.2.1 创建库文件 198

10.2.2 使用动态链接库 198

10.2.3 相互引用的库文件 199

10.2.4 动态库与静态库并存 199

10.3 创建自定义的套接字类库 199

10.3.1 设计套接字类库 199

10.3.2 套接字系统调用:MySocket类 201

10.3.3 多线程实现:MyThread类 202

10.3.4 加锁/解锁:MyMutex类和MyCondition类 205

10.3.5 基于TCP的多线程并发服务器:TcpServThr类 209

10.3.6 TCP多线程客户类:TcpCliThr类 214

10.4 实例分析 218

10.4.1 实现聊天室服务器 218

10.4.2 实现聊天室客户 225

10.4.3 运行程序 227

10.5 小结 230

第四部分 高级网络编程技术 231

第11章 守护进程 231

11.1 输出守护进程消息 231

11.1.1 syslogd进程 231

11.1.2 syslog()函数 232

11.2.1 守护进程的创建过程 234

11.2.2 创建守护进程的代码 234

11.2 创建守护进程 234

11.1.3 closelog()函数 234

11.3 配置守护进程 235

11.4 守护进程实例 236

11.5 小结 241

第12章 原始套接字 243

12.1 产生原始套接字 243

12.2 写原始套接字 244

12.3 读原始套接字 244

12.4 原始套接字实例 245

12.5 小结 253

13.1.2 DLPI 254

13.1.1 BSD包过滤器 254

13.1.3 SOCK_PACKET 254

第13章 数据链路访问 254

13.1 数据链路访问方法 254

13.1.4 libpcap 255

13.2 libpcap应用 255

13.2.1 libpcap库函数 255

13.2.2 libpcap数据结构 258

13.2.3 过滤程序 258

13.3 数据链路访问实例 259

13.4 小结 264

第14章 多接口设计 265

14.1 单个服务器绑定到多个接口 265

14.2 多个服务器绑定到多个接口 269

14.3 小结 274

15.1 创建路由套接字 275

15.2 读写路由套接字 275

第15章 路由套接字 275

15.3 读取路由信息 277

15.4 路由套接字实例 279

15.5 小结 282

第16章 简单路由器实例分析 283

16.1 设计专用路由器 283

16.2 实现专用路由器 286

16.2.1 捕获数据包:myCap类和myCapIP类 286

16.2.2 查询系统路由:myRoute类 293

16.2.3 发送IP包:myRaw类 297

16.2.4 封装串口通信:SerialComm类 300

16.2.5 处理专用数据传输网络协议:myDevice类 300

16.2.6 同时发送和接收:sendThr、recvThr和myRouter类 302

16.3 小结 310

附录A 套接字Wrapper类源程序 311

附录B 串口通信类源程序 337