注重体验与质量的电子书资源下载网站
分类于: 其它 职场办公
简介
TCP Sockets编程: TCP Sockets编程 豆 7.4分
资源最后更新于 2020-08-23 08:20:27
作者:斯托里默 (Jesse Storimer)
译者:门 佳
出版社:人民邮电出版社
出版日期:2013-01
ISBN:9787115330529
文件格式: pdf
标签: 网络编程 Ruby network 计算机 Programming 网络 Linux/Unix 程序设计
简介· · · · · ·
本书从最底层的概念开始,然后是高层的Ruby包装器,最后涉及到更复杂的内容。最初你会学到如何使用Ruby所提供的底层调用来创建套接字,随后将会看到服务器以及客户端的bind/listen/accept或bind/connect方法的生命周期。接下来将学习到如何使用Ruby中的各种高级包装器类,以避开繁杂的旁枝末节。
本书的中间部分包含了一些高级课题,例如如何正确地实现套接字超时、SSL套接字、缓冲等。最后部分通过使用不同的并发模式来多次实现一个FTP服务器,从而将所有的理论知识应用于实践。
服务器和客户端的生命周期。
使用Ruby在合适的时机,以各种方式读取并写入数据。
提高Socket性能的一些方法。
SSL Sockets基础知识。
实现并发网络的6种架构模式。
连接复用、非阻塞IO、Sockets超时和Sockets选项,等等。
目录
目 录
第1章 建立套接字 1
1.1 Ruby的套接字库 1
1.2 创建首个套接字 1
1.3 什么是端点 2
1.4 环回地址 3
1.5 IPv6 3
1.6 端口 4
1.7 创建第二个套接字 5
1.8 文档 6
1.9 本章涉及的系统调用 7
第2章 建立连接 8
第3章 服务器生命周期 9
3.1 服务器绑定 9
3.1.1 该绑定到哪个端口 10
3.1.2 该绑定到哪个地址 11
3.2 服务器侦听 12
3.2.1 侦听队列 13
3.2.2 侦听队列的长度 13
3.3 接受连接 14
3.3.1 以阻塞方式接受连接 15
3.3.2 accept调用返回一个数组 15
3.3.3 连接类 17
3.3.4 文件描述符 17
3.3.5 连接地址 18
3.3.6 accept循环 18
3.4 关闭服务器 19
3.4.1 退出时关闭 19
3.4.2 不同的关闭方式 20
3.5 Ruby包装器 22
3.5.1 服务器创建 22
3.5.2 连接处理 24
3.5.3 合而为一 25
3.6 本章涉及的系统调用 25
第4章 客户端生命周期 27
4.1 客户端绑定 28
4.2 客户端连接 28
4.3 Ruby包装器 30
4.4 本章涉及的系统调用 32
第5章 交换数据 33
第6章 套接字读操作 36
6.1 简单的读操作 36
6.2 没那么简单 37
6.3 读取长度 38
6.4 阻塞的本质 39
6.5 EOF事件 39
6.6 部分读取 41
6.7 本章涉及的系统调用 43
第7章 套接字写操作 44
第8章 缓冲 45
8.1 写缓冲 45
8.2 该写入多少数据 46
8.3 读缓冲 47
8.4 该读取多少数据 47
第9章 第一个客户端/服务器 49
9.1 服务器 49
9.2 客户端 51
9.3 投入运行 52
9.3 分析 52
第10章 套接字选项 54
10.1 SO_TYPE 54
10.2 SO_REUSE_ADDR 55
10.3 本章涉及的系统调用 56
第11章 非阻塞式IO 57
11.1 非阻塞式读操作 57
11.2 非阻塞式写操作 60
11.3 非拥塞式接收 62
11.4 非拥塞式连接 63
第12章 连接复用 65
12.1 select(2) 66
12.2 读/写之外的事件 68
12.2.1 EOF 69
12.2.2 accept 69
12.2.3 connect 69
12.3 高性能复用 72
第13章 Nagle算法 74
第14章 消息划分 76
14.1 使用新行 77
14.2 使用内容长度 79
第15章 超时 81
15.1 不可用的选项 81
15.2 IO.select 82
15.3 接受超时 83
15.4 连接超时 83
第16章 DNS查询 85
第17章 SSL套接字 87
第18章 紧急数据 92
18.1 发送紧急数据 93
18.2 接受紧急数据 93
18.3 局限 94
18.4 紧急数据和IO.select 95
18.5 SO_OOBINLINE选项 96
第19章 网络架构模式 97
第20章 串行化 101
20.1 讲解 101
20.2 实现 101
20.3 思考 105
第21章 单连接进程 107
21.1 讲解 107
21.2 实现 108
21.3 思考 111
21.4 案例 111
第22章 单连接线程 112
22.1 讲解 112
22.2 实现 113
22.3 思考 116
22.4 案例 117
第23章 Preforking 118
23.1 讲解 118
23.2 实现 119
23.3 思考 123
23.4 案例 124
第24章 线程池 125
24.1 讲解 125
24.2 实现 125
24.3 思考 129
24.4 案例 130
第25章 事件驱动 131
25.1 讲解 131
25.2 实现 133
25.3 思考 140
25.4 案例 142
第26章 混合模式 143
26.1 nginx 143
26.2 Puma 144
26.3 EventMachine 145
第27章 结语 147
第1章 建立套接字 1
1.1 Ruby的套接字库 1
1.2 创建首个套接字 1
1.3 什么是端点 2
1.4 环回地址 3
1.5 IPv6 3
1.6 端口 4
1.7 创建第二个套接字 5
1.8 文档 6
1.9 本章涉及的系统调用 7
第2章 建立连接 8
第3章 服务器生命周期 9
3.1 服务器绑定 9
3.1.1 该绑定到哪个端口 10
3.1.2 该绑定到哪个地址 11
3.2 服务器侦听 12
3.2.1 侦听队列 13
3.2.2 侦听队列的长度 13
3.3 接受连接 14
3.3.1 以阻塞方式接受连接 15
3.3.2 accept调用返回一个数组 15
3.3.3 连接类 17
3.3.4 文件描述符 17
3.3.5 连接地址 18
3.3.6 accept循环 18
3.4 关闭服务器 19
3.4.1 退出时关闭 19
3.4.2 不同的关闭方式 20
3.5 Ruby包装器 22
3.5.1 服务器创建 22
3.5.2 连接处理 24
3.5.3 合而为一 25
3.6 本章涉及的系统调用 25
第4章 客户端生命周期 27
4.1 客户端绑定 28
4.2 客户端连接 28
4.3 Ruby包装器 30
4.4 本章涉及的系统调用 32
第5章 交换数据 33
第6章 套接字读操作 36
6.1 简单的读操作 36
6.2 没那么简单 37
6.3 读取长度 38
6.4 阻塞的本质 39
6.5 EOF事件 39
6.6 部分读取 41
6.7 本章涉及的系统调用 43
第7章 套接字写操作 44
第8章 缓冲 45
8.1 写缓冲 45
8.2 该写入多少数据 46
8.3 读缓冲 47
8.4 该读取多少数据 47
第9章 第一个客户端/服务器 49
9.1 服务器 49
9.2 客户端 51
9.3 投入运行 52
9.3 分析 52
第10章 套接字选项 54
10.1 SO_TYPE 54
10.2 SO_REUSE_ADDR 55
10.3 本章涉及的系统调用 56
第11章 非阻塞式IO 57
11.1 非阻塞式读操作 57
11.2 非阻塞式写操作 60
11.3 非拥塞式接收 62
11.4 非拥塞式连接 63
第12章 连接复用 65
12.1 select(2) 66
12.2 读/写之外的事件 68
12.2.1 EOF 69
12.2.2 accept 69
12.2.3 connect 69
12.3 高性能复用 72
第13章 Nagle算法 74
第14章 消息划分 76
14.1 使用新行 77
14.2 使用内容长度 79
第15章 超时 81
15.1 不可用的选项 81
15.2 IO.select 82
15.3 接受超时 83
15.4 连接超时 83
第16章 DNS查询 85
第17章 SSL套接字 87
第18章 紧急数据 92
18.1 发送紧急数据 93
18.2 接受紧急数据 93
18.3 局限 94
18.4 紧急数据和IO.select 95
18.5 SO_OOBINLINE选项 96
第19章 网络架构模式 97
第20章 串行化 101
20.1 讲解 101
20.2 实现 101
20.3 思考 105
第21章 单连接进程 107
21.1 讲解 107
21.2 实现 108
21.3 思考 111
21.4 案例 111
第22章 单连接线程 112
22.1 讲解 112
22.2 实现 113
22.3 思考 116
22.4 案例 117
第23章 Preforking 118
23.1 讲解 118
23.2 实现 119
23.3 思考 123
23.4 案例 124
第24章 线程池 125
24.1 讲解 125
24.2 实现 125
24.3 思考 129
24.4 案例 130
第25章 事件驱动 131
25.1 讲解 131
25.2 实现 133
25.3 思考 140
25.4 案例 142
第26章 混合模式 143
26.1 nginx 143
26.2 Puma 144
26.3 EventMachine 145
第27章 结语 147