/
za
/
example_web_server_on_rust
Обзор
Документация
Войти
/
za
/
example_web_server_on_rust
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.rs
39 строк
1006 B
Alexey Zabolotnov
first_commit
26 мар 2024, 15:19
26 мар 2024, 15:19
e900f2b
Код
Авторство
О чём код?
use std::fs; use std::io::{BufRead, BufReader, Write}; use std::net::{TcpListener, TcpStream}; use WebServer::ThreadPool; fn main() { let listener = TcpListener::bind("127.0.0.1:8080").unwrap(); let pool = ThreadPool::new(4); for stream in listener.incoming() { let stream = stream.unwrap(); pool.execute(|| { handle_connection(stream); }); } } fn handle_connection(mut stream: TcpStream ) { let buf_reader = BufReader::new(&mut stream); let request_line = buf_reader.lines().next().unwrap().unwrap(); let (status_line, filename) = if request_line == "GET / HTTP/1.1" { ("HTTP/1.1 200 OK", "www/hello.html") }else { ("HTTP/1.1 404 NOT FOUND", "www/404.html") }; let contents = fs::read_to_string(filename).unwrap(); let length = contents.len(); let response = format!( "{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}" ); stream.write_all(response.as_bytes()).unwrap(); }