private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) { ListenThread.StateSection = MemoryMappedFile.CreateOrOpen("TeknoParrot_NetState", Marshal.SizeOf <TpNetStateStruct.TpNetState>()); ListenThread.StateView = ListenThread.StateSection.CreateViewAccessor(); new Thread(() => ListenThread.Listen(GridLobbies, BtnRefresh, BtnJoinGame, this)).Start(); }
/// <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."); }
static void Main(string[] args) { ILogger logger = new NLogger(); // Create the threads. ServerThread server = new ServerThread(logger); ListenThread listen = new ListenThread(logger, server, 4530); DatabaseThread database = new DatabaseThread(logger); // Create the login handler. Login login = new Login(logger, server, database); // Start things up. server.Run(); listen.Run(); database.Run(); // We could potentially make this a service so there's no infinite // looping. while (true) { if (server.Fatal || listen.Fatal) { // TODO: Potentially attempt to restart? break; } Thread.Sleep(100); } }
/// <summary> /// Start the server /// </summary> /// <returns></returns> public bool Start() { if (Logging) { Logger.Write("REGION", "Method [Start]"); } if (!ListenThread.IsAlive && !Running) { if (Logging) { Logger.Write("SUCCESS", "Starting server"); } Running = true; ListenThread.Start(); ManagementThread.Start(); return(true); } if (Logging) { Logger.Write("FAILED", "Starting server"); } return(false); }
public void Stop( ) { lock (this) { if (IsRunning) { ListenThread.Abort( ); IsRunning = false; } } }
public void Quit(string reason) { foreach (var channel in Channels.Values) { channel.SendQuit(this, reason); } ListenThread.Abort(); PingThread.Abort(); TcpClient.Close(); }
public bool Start() { if (!ListenThread.IsAlive) { Running = true; ListenThread.Start(); PingThread.Start(); return(true); } return(false); }
public ServerBase(int listenPort, string dbConnectString) { // Start log thread LogThread log = new LogThread(); // Start database thread if( dbConnectString != null ) _db = new DatabaseThread(dbConnectString); // Start listen thread _lt = new ListenThread(listenPort); // Start input thread _inputThread = new InputThread(); }
private void UserControl_Loaded(object sender, RoutedEventArgs e) { if (_isLoaded) { return; } ListenThread.StateSection = MemoryMappedFile.CreateOrOpen("TeknoParrot_NetState", Marshal.SizeOf <TpNetStateStruct.TpNetState>()); ListenThread.StateView = ListenThread.StateSection.CreateViewAccessor(); MainWindow mainWindow = Application.Current.Windows.OfType <MainWindow>().Single(); _isLoaded = true; new Thread(() => ListenThread.Listen(GridLobbies, BtnRefresh, BtnJoinGame, mainWindow)).Start(); ListenThread.SelectedGameId = (GameId)((FrameworkElement)GameListCombo.SelectedItem).Tag; BtnRefresh.IsEnabled = false; ListenThread.RefreshList = true; }
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"); } }
public void Start() { Listener.Start(); ListenThread.Start(this); }