Shadowsocks (二) TCPRelayHandler

Reading Time: 3 minutes 这一次我们主要分析一下 TCPRelayHandler 这个类, 这个类如前文所述, 是 TCPRelay 创建出来, 处理单个 TCP 连接的一个类. 其主要通过 handle_event 函数来处理 IO 事件. 遗留问题 回顾一下我们之前的遗留问题: daemon 进程是怎么启动的呢? 为什么要等最后 loop.run() 之前再 set_uesr 呢? loop 是怎么工作的? 为什么还需要判断 handler 不为空, 什么情况下它会是空呢? 最后看起来是在判断超时的几行代码的意义是什么呢? 三个 server 分别是怎么工作的呢? 为什么 TCPRelay 生成完新 handler…

Shadowsocks (一) 主循环

Reading Time: 5 minutes 这里简单分析一下 Shadowsocks 这个软件的源码. 因为网上一直有声音认为其源码质量不错. 刚好最近在学一些服务器编程相关的知识, 所以就来简单分析一下它. 同时由于希望能获得一些阅读源码的经验. 这里会简单记录我读源码的心路历程. 目录结构 首先我们来 tree 一下, 惯例, 测试相关的文件就省略了 ❯ tree . ├── CHANGES ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE ├── MANIFEST.in ├── README.md ├── README.rst ├── config.json.example ├── de…