public MasterServer(string host, ushort port) { server = new TCPServer(2048); server.Connect(host, port); server.textMessageReceived += MessageReceived; IsRunning = true; server.disconnected += (sender) => { IsRunning = false; }; server.playerDisconnected += (player, sender) => { for (int i = 0; i < hosts.Count; i++) { if (hosts[i].Player == player) { Log($"Host [{hosts[i].Address}] on port [{hosts[i].Port}] with name [{hosts[i].Name}] removed"); hosts.RemoveAt(i); return; } } }; Task.Queue(() => { while (server.IsBound) { server.SendAll(server.GeneratePing()); Thread.Sleep(PING_INTERVAL); } }, PING_INTERVAL); }