内容介绍
这本书从最低级的概念开始,然后是高级的Ruby包装器,最后涉及到更复杂的内容。首先,您将学习如何使用Ruby提供的底层调用来创建套接字,然后您将看到服务器和客户端的绑定/listen/接受或约束/连接方法的生命周期。接下来,我们将学习如何在Ruby中使用各种高级包装类来避免复杂的侧面细节。
这本书的中间部分包含一些高级主题,例如如何正确实现套接字超时、SSL套接字、缓冲等。最后,该部分利用不同的并发模式多次实现了一个FTP服务器,从而将所有的理论知识应用到实践中。
以及服务器和客户端的生命周期。
使用Ruby在适当的时候以各种方式读写数据。
提高套接字性能的一些方法。
SSLSockets的基本知识。
实现并发网络的六种架构模式。
连接复用、非阻塞IO、套接字超时和套接字选项等。
目录
- 第1章 建立套接字1
- 1.1 Ruby的套接字库1
- 1.2 创建首个套接字1
- 1.3 什么是端点2
- 1.4 环回地址3
- 1.5 IPv63
- 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_TYPE54
- 10.2 SO_REUSE_ADDR55
- 10.3 本章涉及的系统调用56
- 第11章 非阻塞式IO57
- 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 EOF69
- 12.2.2 accept69
- 12.2.3 connect69
- 12.3 高性能复用72
- 第13章 Nagle算法74
- 第14章 消息划分76
- 14.1 使用新行77
- 14.2 使用内容长度79
- 第15章 超时81
- 15.1 不可用的选项81
- 15.2 IO.select82
- 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.select95
- 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章 Preforking118
- 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 nginx143
- 26.2 Puma144
- 26.3 EventMachine145
- 第27章 结语147
挺薄挺小也挺简单的一本书,相当与将Ruby中的TCP Sockets讲了一部分,顺带说明了一些基础知识。它并不能让你能够深入了解,对于Sockets入门来说勉勉强强。如果想提升Ruby水平,本书作用也不大,坦白来说本书是不是Ruby写的都影响不大。
花了不到半天,就看完了。讲的东西是比较简单,如果是新人学习的话,还是勉强看看也可以。了解怎么用ruby写个简单服务端/客户端。有网络编程的经验,不建议看了。没有太多值得你惊喜的东西。看完这本书,依旧没法写好网络这块哈。