From 6bb2678eb53839411e1e07f5adb3de598e424c0a Mon Sep 17 00:00:00 2001 From: _ <> Date: Tue, 27 Oct 2020 02:00:09 +0000 Subject: [PATCH] Very primitive UDP receive --- src/bin/relay.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/bin/relay.rs b/src/bin/relay.rs index 77f7390..4cdbd06 100644 --- a/src/bin/relay.rs +++ b/src/bin/relay.rs @@ -69,6 +69,21 @@ async fn handle_udp_send () -> Response status_reply (StatusCode::OK, "ok\n") } +async fn handle_udp_recv () -> Response +{ + use tokio::net::UdpSocket; + + let mut sock = UdpSocket::bind (SocketAddr::from (([0,0,0,0], 4001))).await.unwrap (); + + let mut buffer = vec! [0u8; 4096]; + + let (bytes_received, _addr) = sock.recv_from (&mut buffer [..]).await.unwrap (); + + buffer.truncate (bytes_received); + + status_reply (StatusCode::OK, buffer) +} + async fn handle_all (req: Request , state: Arc ) -> Result , Infallible> { @@ -84,6 +99,9 @@ async fn handle_all (req: Request , state: Arc ) else if uri == "/udp_send" { Ok (handle_udp_send ().await) } + else if uri == "/udp_recv" { + Ok (handle_udp_recv ().await) + } else { Ok (status_reply (StatusCode::OK, "Hi\n")) }