http_server.rs

// 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); } } } }
Simple HTTP server example for Rust

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.