/// <summary> /// Stops server. /// </summary> public override void Stop() { if (!IsStarted) { return; } _listener.Stop(); if (_acceptThread != null && _acceptThread.IsAlive) { _acceptThread.Interrupt(); _acceptThread.Join(); } IsStarted = false; while (SocketClients.Count > 0) { SocketClientBase socketClient = SocketClients[0]; socketClient.Disconnect(); if (SocketClients.Contains(socketClient)) { SocketClients.Remove(socketClient); } } }
private void SocketClientDisconnected(object sender, SocketEventArgs e) { var socketClient = sender as SocketClientBase; if (socketClient != null && SocketClients.Contains(socketClient)) { SocketClients.Remove(socketClient); } OnDisconnected(e); }
/// <summary> /// Stops server. /// </summary> public override void Stop() { if (ServerStatus == SocketServerStatus.Stop) { return; } ServerStatus = SocketServerStatus.Stop; _listener.Stop(); while (SocketClients.Count > 0) { var socketClient = SocketClients[0]; socketClient.Disconnect(); if (SocketClients.Contains(socketClient)) { SocketClients.Remove(socketClient); } } }