You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.rs 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. use std::net::{TcpStream, TcpListener};
  2. use std::io::prelude::*;
  3. use std::fs;
  4. fn main() {
  5. let listener = TcpListener::bind("127.0.0.1:26382").unwrap();
  6. for stream in listener.incoming() {
  7. let stream = stream.unwrap();
  8. handle_connecton(stream);
  9. }
  10. }
  11. fn handle_connecton(mut stream: TcpStream) {
  12. let mut buffer = [0; 512];
  13. stream.read(&mut buffer).unwrap();
  14. let get = b"GET / HTTP/1.1\r\n";
  15. if buffer.starts_with(get) {
  16. // It's the request we want
  17. let status_line = "HTTP/1.1 200 OK\r\n\r\n";
  18. let contents = fs::read_to_string("hello.html").unwrap();
  19. let response = format!("{}{}", status_line, contents);
  20. stream.write(response.as_bytes()).unwrap();
  21. stream.flush().unwrap();
  22. } else {
  23. let status_line = "HTTP/1.1 404 NOT FOUND\r\n\r\n";
  24. let contents = fs::read_to_string("404.html").unwrap();
  25. let response = format!("{}{}", status_line, contents);
  26. stream.write(response.as_bytes()).unwrap();
  27. stream.flush().unwrap();
  28. }
  29. // println!("Request: {}", String::from_utf8_lossy(&buffer[..]));
  30. }