@SuppressWarnings("resource")
	public void serverStart() throws Exception {
		
		System.out.println("Server started");
		
		ServerSocket serverSocket = new ServerSocket(5432);
		LinkedList<Socket> clientSockets = new LinkedList<Socket>();
		ArrayList<PrintWriter> outArrayList = new ArrayList<PrintWriter>();

		int count = 0; 

		/*
		 * For every 4 clients connected, we create a manager thread which will
		 * manage the client information.
		 * 
		 * Server thread continues to run and listens for new connections.
		 */
		while (true) {
			Socket socket = serverSocket.accept();
			
			boolean result = this.verificaiton(socket);
			if (!result) {
				System.out.println("Verification Failed");
				socket.close();
			} else {
				clientSockets.add(socket);
				outArrayList.add(new PrintWriter(socket.getOutputStream(), true));
				count++;
				System.out.println(count + " p connected.");
				
				for(PrintWriter out : outArrayList) {
					out.println(clientSockets.size());
				}
			}
			
			if (count == PLAYERS_PER_GAME) {

				// Create copy of the list of client sockets.
				LinkedList<Socket> copyOfClientSockets = new LinkedList<Socket>(clientSockets);
				
				// Pass the clientSockets to the clientManager.
				Thread clientManager;
				if (this.protocal == PROTOCAL.NOPROTOCAL || this.protocal == PROTOCAL.T2) {
					clientManager = new Thread(new UnSecureClientManagerII(copyOfClientSockets));
				} else {
					clientManager = new Thread(new SecureClientManager(copyOfClientSockets, this));
				}
				//Thread clientManager = new Thread(new ClientManager(copyOfClientSockets));
				System.out.println("Manager thread created.");
				clientManager.start();

				// Reset count and clear the existing list of clients sockets. 
				count = 0;
				clientSockets.clear();
				outArrayList.clear();
			}

			Thread.sleep(1000);
		}
	}