🦀/100 Projects/Notes/Source

src/main.rs

View on GitHub
use std::io::{BufRead, BufReader, Write};
use std::net::{TcpListener, TcpStream};
use std::thread;
 
fn main() -> std::io::Result<()> {
    println!("🌐 TCP Echo Server listening on 127.0.0.1:7878");
 
    let listener = TcpListener::bind("127.0.0.1:7878")?;
 
    for stream in listener.incoming() {
        match stream {
            Ok(stream) => {
                println!("📥 Connection from: {}", stream.peer_addr()?);
                thread::spawn(|| handle_client(stream));
            }
            Err(e) => eprintln!("❌ Connection failed: {}", e),
        }
    }
 
    Ok(())
}
 
fn handle_client(mut stream: TcpStream) {
    let peer = stream.peer_addr().unwrap();
    let reader = BufReader::new(stream.try_clone().unwrap());
 
    for line in reader.lines() {
        match line {
            Ok(msg) => {
                println!("📨 [{}] {}", peer, msg);
                let response = format!("Echo: {}\n", msg);
                stream.write_all(response.as_bytes()).unwrap();
            }
            Err(e) => {
                println!("❌ Error with {}: {}", peer, e);
                break;
            }
        }
    }
 
    println!("🔌 Connection with {} closed.", peer);
}

← Back to folder