2 use async_trait::async_trait;
3 use std::{io, sync::Arc};
7 sock: Arc<net::UdpSocket>,
11 impl UdpSender for Sender {
12 async fn send(&self, data: &[u8]) -> io::Result<()> {
13 self.sock.send(data).await?;
19 sock: Arc<net::UdpSocket>,
23 impl UdpReceiver for Receiver {
24 async fn recv(&self) -> io::Result<Vec<u8>> {
25 let mut buffer = Vec::new();
26 buffer.resize(UDP_PKT_SIZE, 0);
28 let len = self.sock.recv(&mut buffer).await?;
35 pub async fn connect(addr: &str) -> io::Result<(RudpSender<Sender>, RudpReceiver<Sender>)> {
36 let sock = Arc::new(net::UdpSocket::bind("0.0.0.0:0").await?);
37 sock.connect(addr).await?;
43 sock: Arc::clone(&sock),