Final Project: Building a Multithreaded Web Server

    For our final project, we’ll make a web server that says “hello” and looks like Figure 20-1 in a web browser.

    Figure 20-1: Our final shared project

    • Learn a bit about TCP and HTTP.
    • Parse a small number of HTTP requests.
    • Improve the throughput of our server with a thread pool.

    Before we get started, we should mention one detail: the method we’ll use won’t be the best way to build a web server with Rust. Community members have published a number of production-ready crates available on that provide more complete web server and thread pool implementations than we’ll build. However, our intention in this chapter is to help you learn, not to take the easy route. Because Rust is a systems programming language, we can choose the level of abstraction we want to work with and can go to a lower level than is possible or practical in other languages. We’ll therefore write the basic HTTP server and thread pool manually so you can learn the general ideas and techniques behind the crates you might use in the future.