2 use std::{io, sync::Arc};
6 sock: Arc<net::UdpSocket>,
9 impl UdpSender for Sender {
10 async fn send(&self, data: Vec<u8>) -> io::Result<()> {
11 self.sock.send(&data).await?;
17 sock: Arc<net::UdpSocket>,
20 impl UdpReceiver for Receiver {
21 async fn recv(&self) -> io::Result<Vec<u8>> {
22 let mut buffer = Vec::new();
23 buffer.resize(UDP_PKT_SIZE, 0);
25 let len = self.sock.recv(&mut buffer).await?;
32 pub async fn connect(addr: &str) -> io::Result<(RudpSender<Sender>, RudpReceiver<Sender>)> {
33 let sock = Arc::new(net::UdpSocket::bind("0.0.0.0:0").await?);
34 sock.connect(addr).await?;
40 sock: Arc::clone(&sock),