Example #1
0
        /// <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.");
        }
Example #2
0
 public void Stop()
 {
     try
     {
         Listener.Stop();
     }
     catch
     {
     }
     try
     {
         ListenThread.Join();
     }
     catch
     {
     }
 }
Example #3
0
        /// <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");
            }
        }