use std::io::{Read, Write}; use std::net::{TcpListener, TcpStream}; fn handle_client(mut stream: TcpStream) -> std::io::Result<()> { let mut buf = [0; 1024]; loop { let size = stream.read(&mut buf)?; if size == 0 { break; } let data = &buf[..size]; println!("Received data: {:?}", data); stream.write_all(data)?; println!("Sent data back"); } Ok(()) } fn main() -> std::io::Result<()> { let listener = TcpListener::bind("127.0.0.1:30000")?; println!("Listening on {}", listener.local_addr()?); for stream in listener.incoming() { match stream { Ok(stream) => { println!("New client: {}", stream.peer_addr()?); std::thread::spawn(move || { handle_client(stream).unwrap_or_else(|error| { eprintln!("Error: {}", error); }); }); } Err(error) => { eprintln!("Error: {}", error); } } } Ok(()) }