public void Run() { //Server _serverListener = new ServerListener(); NetManager server = new NetManager(_serverListener, _clientCount); server.UnsyncedEvents = true; server.UpdateTime = 1; if (!server.Start(9050)) { Console.WriteLine("Server start failed"); Console.ReadKey(); return; } _serverListener.Server = server; //Clients _clients = new List <ClientListener>(_clientCount); for (int i = 0; i < _clientCount; i++) { var _clientListener = new ClientListener(); var client1 = new NetManager(_clientListener); client1.SimulationMaxLatency = 1500; client1.MergeEnabled = true; client1.UnsyncedEvents = true; client1.UpdateTime = 1; _clientListener.Client = client1; if (!client1.Start()) { Console.WriteLine("Client1 start failed"); return; } _clients.Add(_clientListener); client1.Connect("127.0.0.1", 9050, AppKey); } // Wait bool waitForConnection = true; while (waitForConnection) { Thread.Sleep(15); Console.WriteLine("Waiting:: Errors " + _serverListener.Errors + " Peers " + _serverListener.Server.PeersCount); if (_serverListener.Errors > 0) { return; } waitForConnection = _serverListener.Server.PeersCount < _clientCount; } Console.WriteLine("Ready. Press any key to start"); Console.ReadKey(); Console.WriteLine("Starting"); var checker = new HealthChecker(); checker.Start(this); //Send _serverListener.Start(); foreach (var client in _clients) { client.Start(); } while (!Console.KeyAvailable) { Thread.Sleep(15); } Console.WriteLine("DONE"); _serverListener.Stop(); foreach (var client in _clients) { client.Stop(); } server.Stop(); Console.WriteLine("Press any key to exit"); Console.ReadKey(); }
static void Main(string[] args) { ClientList = new List <ClientHandler>(); Server.Log(String.Format("Initializing server on {0}:{1}", ServerConstants.SERVER_HOST, ServerConstants.SERVER_PORT)); TcpListener Sock = new TcpListener(IPAddress.Parse(ServerConstants.SERVER_HOST), ServerConstants.SERVER_PORT); ServerListener Listener = new ServerListener(); Listener.Start(Sock); Thread.Sleep(1000); // Launch interactive command interface for user bool KeepGoing = true; int CurrentSession = -1; while (KeepGoing) { MakePrompt(); string UserInput = Console.ReadLine(); string[] UserInputTokens = UserInput.Split(' '); switch (UserInputTokens[0].ToLower()) { case "quit": if (CurrentSession == -1) // At main menu: Send quit to all agents and exit server { Log("Quitting all Sessions"); KeepGoing = false; foreach (ClientHandler client in ClientList) { client.SendClientCommand("quit"); client.Stop(); } Thread.Sleep(1000); // Ensure each ClientHandler thread has a chance to send the message before program exits. } else // In session menu: Send quit to selected session, remove from list, and reset to main menu. { Log("Quitting Session " + CurrentSession); ClientList[CurrentSession].SendClientCommand("quit"); ClientList[CurrentSession].Stop(); ClientList.RemoveAt(CurrentSession); CurrentSession = -1; Prompt = ServerConstants.PROMPT; } break; case "back": CurrentSession = -1; Prompt = ServerConstants.PROMPT; break; case "list": for (int ctr = 0; ctr < ClientList.Count; ctr++) { Console.WriteLine(ctr + ") " + ClientList[ctr].Identify()); } break; case "enter": try{ string SessionID = UserInputTokens[1]; int SpecifiedSession = Int32.Parse(SessionID); if (ClientList.Count > SpecifiedSession) { CurrentSession = SpecifiedSession; Console.WriteLine("Entering session " + CurrentSession); Prompt = String.Format("{0}({1}) ", ServerConstants.PROMPT, CurrentSession); } }catch (Exception) { CurrentSession = -1; Prompt = ServerConstants.PROMPT; LogError("Error in entering specified session"); } break; case "cmd": case "info": if (CurrentSession == -1) { LogError("This Command can only be used after a session has been selected"); } else { try{ ClientList[CurrentSession].SendClientCommand(UserInput); Thread.Sleep(100); }catch (ArgumentOutOfRangeException) { LogError("The specified session does not exist"); }catch (Exception) { LogError("Error in sending command to selected session"); } } break; case "": break; default: LogError("Unknown command: " + UserInput); break; } } Listener.Stop(); foreach (ClientHandler Client in ClientList) { Client.Stop(); } }
static void Main(string[] args) { PrintManager printManager = new PrintManager(); //configure the port the server should listen on ServerConfig config = new ServerConfig(); config.port = 8080; //configure the routes the server should listen for ServerRoute route = new ServerRoute(); route.method = ServerRouteMethod.GET; route.route = "/"; route.action = (ServerRequest request, ServerResponse response) => { response.Status(200, "Welcome to THE SBI Printing Controller"); return(response); }; ServerRoute printerListRoute = new ServerRoute(); printerListRoute.method = ServerRouteMethod.GET; printerListRoute.route = "/list"; printerListRoute.action = (ServerRequest request, ServerResponse response) => { Console.WriteLine("Getting the list of installed printers"); string json = "{"; foreach (string printer in printManager.installed) { json += "\"" + printer + "\","; Console.WriteLine("This is an installed printer option " + printer); } json += "}"; response.Json(json); return(response); }; ServerRoute getDefaultPrinterRoute = new ServerRoute(); getDefaultPrinterRoute.method = ServerRouteMethod.GET; getDefaultPrinterRoute.route = "/get/default"; getDefaultPrinterRoute.action = (ServerRequest request, ServerResponse response) => { Console.WriteLine("Getting the default printer"); string json = "{"; json += "\"" + printManager.getDefaultPrinter() + "\""; json += "}"; response.Json(json); return(response); }; ServerRoute setDefaultPrinterRoute = new ServerRoute(); setDefaultPrinterRoute.method = ServerRouteMethod.GET; setDefaultPrinterRoute.route = "/set/default"; setDefaultPrinterRoute.action = (ServerRequest request, ServerResponse response) => { string[] name = request.request.QueryString.GetValues("printer"); foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters) { if (name[0] == printer) { Console.WriteLine("setting default printer to:" + name[0]); printManager.setDefaultPrinter(name[0]); response.Status(200, "setting default printer to:" + name[0]); return(response); } } response.Status(400, "Bad Request"); return(response); }; ServerRoute printDefaultRoute = new ServerRoute(); printDefaultRoute.method = ServerRouteMethod.POST; printDefaultRoute.route = "/print"; printDefaultRoute.action = (ServerRequest request, ServerResponse response) => { PrintDocument document = new PrintDocument(); if (document.PrinterSettings.PrinterName == printManager.getDefaultPrinter()) { response.Status(200, "PRINTING"); return(response); } response.Status(400, "The Printer has been changed"); return(response); }; //add the route to the routes ServerRoutes routes = new ServerRoutes(); routes.Add(route); routes.Add(printerListRoute); routes.Add(getDefaultPrinterRoute); routes.Add(setDefaultPrinterRoute); try { ServerListener listener = new ServerListener(config, routes); listener.Start(); Console.ReadKey(); listener.Stop(); } catch (Exception e) { Console.WriteLine("Error:" + e.Message); } return; }
/// <summary> /// Stops the server. /// </summary> private void StopServer() { OperationThread.Abort(); OperationThread.Join(); ServerListener.Stop(); }