public static void main(java.lang.String args[]) { clientHandler = new server(); (new Thread(clientHandler)).start(); //userHandler = new UserHandler(); long beforeTime = System.nanoTime(); long totalTimeSpentProcessing = 0; int cycle = 0; long excess = 0; long overSleepTime = 0; long sleepTime = 0; while(!shutdownServer) { userHandler.checkUser(); for (int i = 0; i < userHandler.maxPlayers; i++) { if (userHandler.users[i] != null) { if (!userHandler.users[i].sock.isConnected() || userHandler.users[i].sock == null) { userSlave.savePlayer(userHandler.users[i]); userHandler.users[i] = null; System.out.println("Nullifying player: " + i); } } } long afterTime = System.nanoTime(); long timeDiff = afterTime - beforeTime; //System.out.println("Processing: " + timeDiff + "ns"); sleepTime = (cycleTime - timeDiff) - overSleepTime; if (sleepTime > 0) { try { Thread.sleep(sleepTime/1000000L); } catch(InterruptedException ex){} overSleepTime = (System.nanoTime() - afterTime) - sleepTime; } beforeTime = System.nanoTime(); } userHandler.destruct(); clientHandler.killServer(); clientHandler = null; } public void run() { try { //userHandler = new UserHandler(); shutdownClientHandler = false; clientListener = new java.net.ServerSocket(serverlistenerPort/*, 1, null*/); System.out.println("Now running server on: " + clientListener.getInetAddress().getHostAddress() + ":" + clientListener.getLocalPort()); while(true) { java.net.Socket s = clientListener.accept(); s.setTcpNoDelay(true); String connectingHost = s.getInetAddress().getHostName(); System.out.println("ClientHandler: Accepted from "+connectingHost+":"+s.getPort()); //userHandler.newUserClient(s, connectingHost); in = new BufferedReader(new InputStreamReader(s.getInputStream( ) ) ); out = new PrintWriter(s.getOutputStream( ), true ); userHandler.processClient(in, out, connectingHost, s); /*for (int i = 0; i < userHandler.maxPlayers; i++) { if (userHandler.users[i] != null) { } }*/ } } catch(java.io.IOException ioe) { if(!shutdownClientHandler) System.out.println("Error: Unable to startup listener on "+serverlistenerPort+" - port already in use?"); else System.out.println("ClientHandler was shut down."); } }