🦀/100 Projects/Notes/Source

src/main.rs

View on GitHub
use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
use std::thread;
 
fn main() -> std::io::Result<()> {
    println!("🌍 HTTP Server running at http://127.0.0.1:8080");
 
    let listener = TcpListener::bind("127.0.0.1:8080")?;
 
    for stream in listener.incoming() {
        let stream = stream?;
        thread::spawn(|| {
            handle_client(stream).unwrap_or_else(|e| eprintln!("❌ Error: {}", e));
        });
    }
 
    Ok(())
}
 
fn handle_client(mut stream: TcpStream) -> std::io::Result<()> {
    let mut buffer = [0; 1024];
    stream.read(&mut buffer)?;
 
    let request = String::from_utf8_lossy(&buffer);
    let lines: Vec<&str> = request.lines().collect();
 
    if let Some(request_line) = lines.first() {
        println!("➡️  Request: {}", request_line);
    }
 
    let response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\
        <html><body><h1>Hello from Rust HTTP Server!</h1></body></html>";
 
    stream.write_all(response.as_bytes())?;
    stream.flush()?;
    Ok(())
}

← Back to folder