内容简介
第1章 建立套接字
1.1 Ruby的套接字库
1.2创建首个套接字
1.3什么是端点
1.4环回地址
1.5 IPv6
1.6端口
1.7创建第二个套接字
1.8文档
1.9本章涉及的系统调用
第2章 建立连接
第3章 服务器生命周期
3.1服务器绑定
3.1.1该绑定到哪个端口
3.1.2该绑定到哪个地址
3.2服务器侦听
3.2.1侦听队列
3.2.2侦听队列的长度
3.3接受连接
3.3.1以阻塞方式接受连接
3.3.2 accept调用返回一个数组
3.3.3连接类
3.3.4文件描述符
3.3.5连接地址
3.3.6 accept循环
3.4关闭服务器
3.4.1退出时关闭
3.4.2不同的关闭方式
3.5 Ruby包装器
3.5.1服务器创建
3.5.2连接处理
3.5.3合而为一
3.6本章涉及的系统调用
第4章 客户端生命周期
4.1客户端绑定
4.2客户端连接
4.3 Ruby包装器
4.4本章涉及的系统调用
第5章 交换数据
第6章 套接字读操作
6.1简单的读操作
6.2没那么简单
6.3读取长度
6.4阻塞的本质
6.5 EOF事件
6.6部分读取
6.7本章涉及的系统调用
第7章 套接字写操作
第8章 缓冲
8.1写缓冲
8.2该写入多少数据
8.3读缓冲
8.4该读取多少数据
第9章 第一个客户端/服务器
9.1服务器
9.2客户端
9.3投入运行
9.3分析
第10章 套接字选项
10.1 SO_TYPE
10.2 SO_REUSE_ADDR
10.3本章涉及的系统调用
第11章 非阻塞式IO
11.1非阻塞式读操作
11.2非阻塞式写操作
11.3非拥塞式接收
11.4非拥塞式连接
第12章 连接复用
12.1 select(2)
12.2读/写之外的事件
12.2.1 EOF
12.2.2 accept
12.2.3 connect
12.3高性能复用
第13章 Nagle算法
第14章 消息划分
14.1使用新行
14.2使用内容长度
第15章 超时
15.1不可用的选项
15.2IO.select
15.3接受超时
15.4连接超时
第16章 DNS查询
第17章 SSL套接字
第18章 紧急数据
18.1发送紧急数据
18.2接受紧急数据
18.3局限
18.4紧急数据和IO.select
18.5 SO_OOBINLINE选项
第19章 网络架构模式
第20章 串行化
20.1讲解
20.2实现
20.3思考
第21章 单连接进程
21.1讲解
21.2实现
21.3思考
21.4案例
第22章 单连接线程
22.1讲解
22.2实现
22.3思考
22.4案例
第23章 Preforking
23.1讲解
23.2实现
23.3思考
23.4案例
第24章 线程池
24.1讲解
24.2实现
24.3思考
24.4案例
第25章 事件驱动
25.1讲解
25.2实现
25.3思考
25.4案例
第26章 混合模式
26.1 nginx
26.2 Puma
26.3 EventMachine
第27章 结语