use std::io::Write;
use std::net::TcpListener;
use std::thread;
fn main() {
let listener = TcpListener::bind("127.0.0.1:8080").unwrap();
println!("Server is running on http://127.0.0.1:8080");
while let Ok((mut stream, _)) = listener.accept() {
thread::spawn(move || { // 开启新线程执行请求逻辑
let contents = "Hello World";
let size = contents.len();
let header = format!("HTTP/1.1 200 OK\r\nContent-Length: {size}\r\n\r\n");
stream.write(header.as_bytes()).unwrap(); // 输出头信息
stream.write_all(contents.as_bytes()).unwrap(); // 输出 body 内容信息
});
}
}
2.使用 异步模块(tokio )版
添加依赖,编辑 Cargo.toml 增加如下内容:
[dependencies]
tokio = { version = "0.3", features = ["full"] }
main.rs
usetokio::io::AsyncWriteExt;usetokio::net::TcpListener;#[tokio::main]asyncfnmain(){let listener =TcpListener::bind("127.0.0.1:61383").await.unwrap();println!("Server is running on http://127.0.0.1:61383");whileletOk((mut stream, _))= listener.accept().await{tokio::spawn(asyncmove{let contents ="Hello World";let size = contents.len();let header =format!("HTTP/1.1 200 OK\r\nContent-Length: {size}\r\n\r\n");
stream.write(header.as_bytes()).await.unwrap();// 输出头信息
stream.write_all(contents.as_bytes()).await.unwrap();// 输出 body 内容信息});}}