public static void EditClient(Client editedClient, int index) { ClientsList.RemoveAt(index); ClientsList.Insert(index, editedClient); SaveClients(); }
public static void DeleteClient(int index) { ClientsList.RemoveAt(index); SaveClients(); SetNumberOfClients(); }
/// <summary> /// Removes a client from the server /// </summary> /// <param name="client"></param> /// <param name="type"></param> public void RemoveClient(TCPServerClient client, TCPDisconnectType type = TCPDisconnectType.Disconnect) { if (Logging) { Logger.Write("REGION", "Method [RemoveClient]"); } if (type == TCPDisconnectType.NoHandshake) { if (Logging) { Logger.Write("INFO", "Client no handshake: " + client.UID); } OnNoHandshake?.Invoke(client); } else if (type == TCPDisconnectType.Disconnect) { if (Logging) { Logger.Write("INFO", "Client disconnect: " + client.UID); } OnDisconnected?.Invoke(client); } else if (type == TCPDisconnectType.Timeout) { if (Logging) { Logger.Write("INFO", "Client timeout: " + client.UID); } OnTimeout?.Invoke(client); } else if (type == TCPDisconnectType.Kick) { if (Logging) { Logger.Write("INFO", "Client kick: " + client.UID); } OnKick?.Invoke(client); } lock (ClientsDict) ClientsDict.Remove(client.UID); lock (ClientsList) { for (int e = ClientsList.Count - 1; e >= 0; e--) { if (ClientsList[e].UID == client.UID) { if (Logging) { Logger.Write("INFO", "Client found in ClientsList: " + client.UID); } ClientsList.RemoveAt(e); break; } } } try { client.Socket.Shutdown(SocketShutdown.Both); client.Socket.Close(); } catch (Exception e) { if (Logging) { Logger.Write("FAILED", "Socket shutdown/close", e); } } }