libtailscale-drop/rust/examples/echo_server.rs

39 lines
844 B
Rust
Raw Normal View History

2023-03-12 14:59:30 +01:00
use std::{
io::{self, Read, Write},
net::TcpStream,
thread,
};
2023-03-04 22:45:56 +02:00
2023-03-12 14:59:30 +01:00
use libtailscale::{ServerBuilder, Network};
2023-03-04 22:45:56 +02:00
fn main() {
2023-03-12 14:59:30 +01:00
let ts = ServerBuilder::new().ephemeral().build().unwrap();
2023-03-04 22:45:56 +02:00
let ln = ts.listen(Network::Tcp, ":1999").unwrap();
2023-03-12 14:59:30 +01:00
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];
2023-03-04 22:45:56 +02:00
loop {
2023-03-12 14:59:30 +01:00
match stream.read(&mut buf) {
Ok(n) if n == 0 => {
2023-03-12 14:28:59 +01:00
break;
}
2023-03-12 14:59:30 +01:00
Ok(n) => {
io::stdout().write_all(&buf[0..n]).unwrap();
}
Err(err) => panic!("{err}"),
2023-03-04 22:45:56 +02:00
}
}
}