Dup Ver Goto 📝

TrivialTcpServer

PT2/lang/rust/examples/net does not exist
To
50 lines, 116 words, 1329 chars Page 'TrivialTcpServer' does not exist.

You can test this using the Python client from here.

use std::io::{Read, Write};
use std::net::{TcpListener, TcpStream};
use std::thread;
use std::time::Duration;

fn handle_client(mut stream: TcpStream) {
    let mut buffer = [0; 512];

    loop {
        match stream.read(&mut buffer) {
            Ok(0) => {
                println!("Client disconnected");
                break;
            }
            Ok(n) => {
                println!("Received message: {}", String::from_utf8_lossy(&buffer[..n]));
                stream.write_all(&buffer[..n]).expect("Failed to write stream");
            }
            Err(e) => {
                eprintln!("Failed to read from socket: {:?}",e);
                break;
            }
        }

        thread::sleep(Duration::from_secs(1));
    }
}

fn main() -> std::io::Result<()> {
    let listener = TcpListener::bind("0.0.0.0:8000");
    println!("Listening on 0.0.0.0:8000");

    for stream in listener?.incoming() {
        match stream {
            Ok(stream) => {
                println!("New client connected");
                thread::spawn(|| handle_client(stream));
            }
            Err(e) => {
                eprintln!("Failed to accept a client: {:?}",e);
            }
        }
    }

    Ok(())
}