https://doc.rust-lang.org/1.30.0/book/second-edition/ch20-00-final-project-a-web-server.html
用Rust 来搭建一个多线程网络服务器,主要覆盖
- 了解点TCP和 HTTP.
- 在一个socket上监听TCP connections
- 解析很小一部分 HTTP requests.
- 创建适当的 HTTP response.
- 用 thread pool 来提高服务器吞吐量.
注意:本项目是示例教程。
1. Building a Single-Threaded Web Server 搭建一个单线程web server
2.Turning Our Single-Threaded Server into a Multithreaded Server 将单线程web server 改成 多线程
3. Graceful Shutdown and Cleanup 优雅地关闭和清除
1.搭建一个单线程web server
TCP 和 HTTP 都是 request-response 协议。即一个客户端client向服务器server发送请求request,服务器server
监听请求request,并提供响应response给客户端client。
TCP 是低层协议,描述了信息是如何从一个机器到另外一个机器的但并不指定内容;HTTP是高层协议,在TCP之上,定义了
请求和响应的内容。技术上讲,HTTP可以和其它协议结合使用。但是大部分情况,HTTP和TCP一起使用。
1.1 首先建立一个新的项目,然后来修改代码。
zzl@zzl-virtualbox2:~/rustprj$ cargo new hello --bin
Created binary (application) `hello` package
zzl@zzl-virtualbox2:~/rustprj$
修改src/main.rs 文件如下:
use std::net::TcpListener;
fn main() {
let listener = TcpListener::bind("127.0.0.1:7878").unwrap();
for stream in listener.incoming() {
let stream = stream.unwrap();
println!("Connection establis