예제 #1
0
 public static void SetMaintenanceMode(bool Mode)
 {
     if (Resources.ConnectionResources.MaintenanceMode && !Mode)
     {
         MaintenanceMode.Stop();
     }
     else
     {
         Resources.ConnectionResources.MaintenanceMode = Mode;
     }
 }
        public static void StartServer()
        {
            try
            {
                ConnectionResources.listener = new TcpListener(IPAddress.Any, 12500);

                Events.ServerEvents.ServerStarted.OnServerStarted(new Events.Args.ServerEventArgs());

                if (!Resources.ConnectionResources.MaintenanceMode)
                {
                    TcpClient client;
                    //Neue Instanz der Klasse Client wird angelegt und initialisiert
                    Client cl = new Client();

                    ConnectionResources.listener.Start();

                    while (ConnectionResources.ServerOn)
                    {
                        client = ConnectionResources.listener.AcceptTcpClient();


                        cl.client = client;
                        cl.Initialize();

                        //Login wird in einem separaten Thread ausgeführt, damit der Verbindungsaufbau anderer Clients nicht behindert wird
                        Thread ClientThread = new Thread(new ThreadStart(delegate() { Handle.Login.HandleClientLogin.HandleLogin(cl); }));
                        ClientThread.IsBackground = true;
                        ClientThread.Start();
                    }
                }
                else
                {
                    MaintenanceMode.Start();
                }
            }
            catch (Exception ex)
            {
                Events.ErrorEvents.ConnectionError.OnErrorAppeared(new Events.Args.ErrorEventArgs {
                    ErrorMessage = "Fehler beim Starten des Servers oder beim Verbindungsaufbau zu neuen Clients." + ex.Message + ex.StackTrace
                });
            }
        }