Files
libtailscale-drop/rust/examples/echo_server.rs
T
Jan-Erik Rediger e20f8f6d9d Reformat, docs
2023-03-12 19:44:25 +01:00

44 lines
902 B
Rust

use std::{
io::{self, Read, Write},
net::TcpStream,
thread,
};
use tsnet::{Network, ServerBuilder};
fn main() {
env_logger::init();
let ts = ServerBuilder::new()
.ephemeral()
.redirect_log()
.build()
.unwrap();
let ln = ts.listen(Network::Tcp, ":1999").unwrap();
for conn in ln {
match conn {
Ok(conn) => {
thread::spawn(move || {
handle_client(conn);
});
}
Err(err) => panic!("{err}"),
}
}
}
fn handle_client(mut stream: TcpStream) {
let mut buf = [0; 2048];
loop {
match stream.read(&mut buf) {
Ok(0) => {
break;
}
Ok(n) => {
io::stdout().write_all(&buf[0..n]).unwrap();
}
Err(err) => panic!("{err}"),
}
}
}