Skip to content

Instantly share code, notes, and snippets.

@mjohnsullivan
Last active August 23, 2024 03:19
Show Gist options
  • Save mjohnsullivan/e5182707caf0a9dbdf2d to your computer and use it in GitHub Desktop.
Save mjohnsullivan/e5182707caf0a9dbdf2d to your computer and use it in GitHub Desktop.
Simple HTTP server example for Rust
// Updated example from http://rosettacode.org/wiki/Hello_world/Web_server#Rust
// to work with Rust 1.0 beta
use std::net::{TcpStream, TcpListener};
use std::io::{Read, Write};
use std::thread;
fn handle_read(mut stream: &TcpStream) {
let mut buf = [0u8 ;4096];
match stream.read(&mut buf) {
Ok(_) => {
let req_str = String::from_utf8_lossy(&buf);
println!("{}", req_str);
},
Err(e) => println!("Unable to read stream: {}", e),
}
}
fn handle_write(mut stream: TcpStream) {
let response = b"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html><body>Hello world</body></html>\r\n";
match stream.write(response) {
Ok(_) => println!("Response sent"),
Err(e) => println!("Failed sending response: {}", e),
}
}
fn handle_client(stream: TcpStream) {
handle_read(&stream);
handle_write(stream);
}
fn main() {
let listener = TcpListener::bind("127.0.0.1:8080").unwrap();
println!("Listening for connections on port {}", 8080);
for stream in listener.incoming() {
match stream {
Ok(stream) => {
thread::spawn(|| {
handle_client(stream)
});
}
Err(e) => {
println!("Unable to connect: {}", e);
}
}
}
}
Copy link

ghost commented Jul 17, 2019

how can i serve my html pages with the help of this server?
i did put my html folder in the same directory and typed "http://127.0.0.1:8080/HTML/index.html" but the page did not load.

Thank you

@ndelvalle
Copy link

How can I cleanly shutdown this server TcpListener?

@cezaryB
Copy link

cezaryB commented Apr 12, 2020

Really nice example, thank you

@master-hax
Copy link

great example

Copy link

ghost commented Feb 1, 2023

great works! and great example!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment