经过漫长的学习旅程,我们终于来到了本书的最后。在这一章中,我们将一起完成另一个项目,展示最后几章讨论的一些概念,同时回顾更早学过的内容。
最后这个项目是一个 Web 服务器:它会返回“Hello!”,在浏览器中的效果如图 21-1 所示。
构建这个服务器的计划如下:
- 了解一些 TCP 和 HTTP 知识。
- 通过套接字监听 TCP 连接。
- 解析少量 HTTP 请求。
- 构造正确的 HTTP 响应。
- 使用线程池提高服务器的吞吐量。
127.0.0.1:8080,页面内容为“Hello! Hi from Rust”。开始之前,需要说明两件事。首先,这里使用的方法并非用 Rust 构建 Web 服务器的最佳方案。社区已经发布了许多可用于生产环境的 crate,你可以在 crates.io 上找到它们。它们提供的 Web 服务器和线程池实现比我们将要编写的更完整。不过,本章的目的是帮助你学习。Rust 是系统编程语言,因此我们可以选择想要使用的抽象层级;也可以进入比其他语言所允许或适合的更低层级。
其次,这里不会使用 async 和 await。构建线程池本身已经足够有挑战,再加上编写异步运行时,任务就太多了!不过,我们仍会指出,async 和 await 如何用于本章遇到的某些相同问题。正如第 17 章讨论过的,许多异步运行时会使用线程池来管理工作。
因此,我们将手工编写基本的 HTTP 服务器和线程池,让你理解以后可能使用的 crate 背后的通用思想与技术。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容