Renet UDP

Implementation of an Server/Client using UDP and Renet (does not have authentication yet).

Echo example

Server

```rust let socket = UdpSocket::bind("127.0.0.0:5000").unwrap(); // Create one channel for each type reliable (0), unreliable(1), block(2) let connectionconfig = ConnectionConfig::default(); let maxclients = 64; let mut server: UdpServer = UdpServer::new(maxclients, connectionconfig, socket)?;

let frameduration = Duration::frommillis(100); loop { server.update(frameduration)?; while let Some(event) = server.getevent() { match event { ServerEvent::ClientConnected(id) => println!("Client {} connected.", id), ServerEvent::ClientDisconnected(id, reason) => println!("Client {} disconnected: {}", id, reason) } }

for clientid in server.clientsid().iter() { while let Some(message) = server.receivemessage(clientid, 0) { let text = String::fromutf8(message)?; println!("Client {} sent text: {}", clientid, text); server.broadcastmessage(0, text.asbytes().to_vec()); } }

server.sendpackets()?; thread::sleep(frameduration); } ```

Client

```rust let socket = UdpSocket::bind("127.0.0.1:0")?; // Create one channel for each type reliable (0), unreliable(1), block(2) let connectionconfig = ConnectionConfig::default(); let serveraddr = "127.0.0.1:5000".parse().unwrap(); let mut client = UdpClient::new(socket, serveraddr, connectionconfig)?; let stdinchannel = spawnstdin_channel();

let frameduration = Duration::frommillis(100); loop { client.update(frameduration)?; match stdinchannel.tryrecv() { Ok(text) => client.sendmessage(0, text.asbytes().tovec())?, Err(TryRecvError::Empty) => {} Err(TryRecvError::Disconnected) => panic!("Channel disconnected"), }

while let Some(text) = client.receivemessage(0) { let text = String::fromutf8(text).unwrap(); println!("Message from server: {}", text); }

client.sendpackets()?; thread::sleep(frameduration); }

fn spawnstdinchannel() -> Receiver { let (tx, rx) = mpsc::channel::(); thread::spawn(move || loop { let mut buffer = String::new(); std::io::stdin().read_line(&mut buffer).unwrap(); tx.send(buffer).unwrap(); }); rx } ```