/// <summary> /// Shutdowns this instance. /// </summary> public override void Shutdown() { base.Shutdown(); ConsoleLogger.WriteToLog("Shutting Server down..."); IsRunning = false; TcpClientConnected.Set(); if (ListenThread != null) { ListenThread.Join(); } while (NumClientThreads > 0) { Clients.Last().Value.ThisThread.Join(); } Clients.Clear(); if (Server != null) { Server.Stop(); } ConsoleLogger.WriteToLog("Server successfully Shutdown."); }
public void Stop() { try { Listener.Stop(); } catch { } try { ListenThread.Join(); } catch { } }
/// <summary> /// Stop the server /// </summary> public void Stop() { if (Logging) { Logger.Write("REGION", "Method [Stop]"); } if (Logging) { Logger.Write("INFO", "Stopping server"); } Running = false; lock (ClientsList) lock (ClientsDict) { for (int e = ClientsList.Count - 1; e >= 0; e--) { TCPServerClient client = ClientsList[e]; RemoveClient(client, TCPDisconnectType.Disconnect, e); } } try { Socket.Shutdown(SocketShutdown.Both); Socket.Close(); } catch (Exception er) { } ManagementThread.Join(); ListenThread.Join(); ListenThread = new Thread(() => Listen()); ManagementThread = new Thread(Management); Socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp); Socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false); Socket.Bind(new IPEndPoint(Address, Port)); if (Logging) { Logger.Write("INFO", "Stopped server"); } }