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