最终项目:构建多线程 Web 服务器
这是一段漫长的旅程,但我们已经到达了这本书的结尾。在本章中,我们将一起构建一个项目,以演示我们在最后几章中介绍的一些概念,并回顾一些早期的课程。
对于我们的最终项目,我们将创建一个 Web 服务器,它显示 “hello”,在 Web 浏览器中看起来像图 20-1。
图 20-1:我们最终的共享项目
这是我们构建 Web 服务器的计划:
了解有关 TCP 和 HTTP 的一些知识。
侦听套接字上的 TCP 连接。
解析少量 HTTP 请求。
创建适当的 HTTP 响应。
使用线程池提高服务器的吞吐量。
在开始之前,我们应该提到一个细节:我们将使用的方法不会
是使用 Rust 构建 Web 服务器的最佳方式。社区成员拥有
发布了大量可用于生产的 crate
crates.io 提供比我们将构建的更完整的 Web 服务器和线程池实现。但是,我们在本章中的目的是帮助您学习,而不是走捷径。因为 Rust 是一种系统编程语言,所以我们可以选择我们想要使用的抽象级别,并且可以进入比其他语言可能或实际的更低级别。因此,我们将手动编写基本的 HTTP 服务器和线程池,以便您可以了解将来可能使用的 crate 背后的一般想法和技术。