protected internal void RemoveConnection(string id) { // получаем по id закрытое подключение MyClient client = clients.FirstOrDefault(c => c.Id == id); activeClients.Remove(activeClients.First(x => x.Id == client.Id)); if (activeClients.Count != 0) { Task.Factory.StartNew(() => BroadcastMessage("", "", "", activeClients)); } // и удаляем его из списка подключений if (client != null) { clients.Remove(client); } }
// прослушивание входящих подключений protected internal void Listen() { try { tcpListener = new TcpListener(IPAddress.Any, 23333); tcpListener.Start(); Console.WriteLine("Сервер запущен. Ожидание подключений..."); while (true) { TcpClient tcpClient = tcpListener.AcceptTcpClient(); MyClient clientObject = new MyClient(tcpClient, this, activeClients); Thread clientThread = new Thread(new ThreadStart(clientObject.Process)); clientThread.Start(); } } catch (Exception ex) { Console.WriteLine(ex.Message); Disconnect(); } }
protected internal void AddConnection(MyClient clientObject) { clients.Add(clientObject); }