use tokio::net::TcpListener; use tokio::io::{AsyncReadExt, AsyncWriteExt}; #[tokio::main] async fn main() -> Result<(), Box> { let listener = TcpListener::bind("127.0.0.1:4040").await?; loop { let (mut socket, _) = listener.accept().await?; tokio::spawn(async move { let mut buf = [0; 1024]; loop { let n = match socket.read(&mut buf).await { Ok(n) if n == 0 => return, Ok(n) => n, Err(e) => { log::error!("failed to read from socket; err = {:?}", e); return; } }; if let Err(e) = socket.write_all(&buf[0..n]).await { log::error!("failed to write to socket; err = {:?}", e); return; } } }); } }