use async_std::task;
use env_logger;
use futures::StreamExt;
use async_std_utp::{UtpListener, UtpSocket};
async fn handle_client(mut s: UtpSocket) {
let mut buf = vec![0; 1500];
match s.recv_from(&mut buf).await {
Ok((nread, src)) => {
println!("<= [{}] {:?}", src, &buf[..nread]);
drop(s.send_to(&buf[..nread]).await);
}
Err(e) => println!("{}", e),
}
}
#[async_std::main]
async fn main() {
env_logger::init();
let addr = "127.0.0.1:8080";
let listener = UtpListener::bind(addr)
.await
.expect("Error binding listener");
let mut stream = listener.incoming();
while let Some(connection) = stream.next().await {
match connection {
Ok((socket, _src)) => {
task::spawn(handle_client(socket));
}
_ => (),
}
}
}