Implementation of an Server/Client using UDP and Renet (does not have authentication yet).
```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); } ```
```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