diff --git a/renet/src/transport/client.rs b/renet/src/transport/client.rs index 68314aa5..e47fb452 100644 --- a/renet/src/transport/client.rs +++ b/renet/src/transport/client.rs @@ -70,6 +70,10 @@ impl NetcodeClientTransport { }) } + pub fn addr(&self) -> io::Result { + self.socket.local_addr() + } + pub fn client_id(&self) -> u64 { self.netcode_client.client_id() } diff --git a/renet/src/transport/server.rs b/renet/src/transport/server.rs index c3dbf26a..b0283800 100644 --- a/renet/src/transport/server.rs +++ b/renet/src/transport/server.rs @@ -73,22 +73,31 @@ impl NetcodeServerTransport { }) } + /// Returns the server public address pub fn addr(&self) -> SocketAddr { self.netcode_server.address() } + /// Returns the maximum number of clients that can be connected. pub fn max_clients(&self) -> usize { self.netcode_server.max_clients() } + /// Returns current number of clients connected. pub fn connected_clients(&self) -> usize { self.netcode_server.connected_clients() } + /// Returns the user data for client if connected. pub fn user_data(&self, client_id: u64) -> Option<[u8; NETCODE_USER_DATA_BYTES]> { self.netcode_server.user_data(client_id) } + /// Returns the client address if connected. + pub fn client_addr(&self, client_id: u64) -> Option { + self.netcode_server.client_addr(client_id) + } + /// Disconnects all connected clients. /// This sends the disconnect packet instantly, use this when closing/exiting games, /// should use [RenetServer::disconnect_all][crate::RenetServer::disconnect_all] otherwise. diff --git a/renetcode/src/server.rs b/renetcode/src/server.rs index 20a9c1b2..56169674 100644 --- a/renetcode/src/server.rs +++ b/renetcode/src/server.rs @@ -519,7 +519,7 @@ impl NetcodeServer { self.max_clients } - /// Returns the maximum number of clients that can be connected. + /// Returns current number of clients connected. pub fn connected_clients(&self) -> usize { self.clients.iter().filter(|slot| slot.is_some()).count() }