]> git.proxmox.com Git - rustc.git/blob - src/doc/book/listings/ch20-web-server/listing-20-05/src/main.rs
New upstream version 1.63.0+dfsg1
[rustc.git] / src / doc / book / listings / ch20-web-server / listing-20-05 / src / main.rs
1 // ANCHOR: here
2 use std::{
3 fs,
4 io::{prelude::*, BufReader},
5 net::{TcpListener, TcpStream},
6 };
7 // --snip--
8
9 // ANCHOR_END: here
10 fn main() {
11 let listener = TcpListener::bind("127.0.0.1:7878").unwrap();
12
13 for stream in listener.incoming() {
14 let stream = stream.unwrap();
15
16 handle_connection(stream);
17 }
18 }
19
20 // ANCHOR: here
21 fn handle_connection(mut stream: TcpStream) {
22 let buf_reader = BufReader::new(&mut stream);
23 let http_request: Vec<_> = buf_reader
24 .lines()
25 .map(|result| result.unwrap())
26 .take_while(|line| !line.is_empty())
27 .collect();
28
29 let status_line = "HTTP/1.1 200 OK";
30 let contents = fs::read_to_string("hello.html").unwrap();
31 let length = contents.len();
32
33 let response =
34 format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}");
35
36 stream.write_all(response.as_bytes()).unwrap();
37 }
38 // ANCHOR_END: here