public void clientProcess() {

		try {
			// open port to be able to listen
			this.listenSocket = new ServerSocket(this.listenPort);
			System.out.println("Server started. Listening on port: " + this.listenPort);

			// open connection to server
			this.serverAddress = InetAddress.getByName(this.serverHost);
			this.socketToServer = new Socket(this.serverAddress, this.serverPort);

			// create initial connection
			OutputStream outputStream = this.socketToServer.getOutputStream();
			OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
			BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);

			// report in
			bufferedWriter.write(ServerClientHelper.createPacket(Status.ACTIVE.toString(), String.valueOf(this.listenPort), "", ""));
			bufferedWriter.close();

			while (!this.shutdown) {
				this.socketToServer = this.listenSocket.accept();
				InputStream inputStream = this.socketToServer.getInputStream();
				InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
				BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
				StringBuffer stringBuffer = new StringBuffer();
				
				String line = "";
				while((line = bufferedReader.readLine()) != null && line.trim().length() != 0){
					stringBuffer.append(line);
					stringBuffer.append("\n");
				}
				
				this.socketToServer.close();

				String[] packetParams = ServerClientHelper.parsePacket(stringBuffer.toString());
				String[] commandParams = null;
				
				// Check status received from server
				switch(Status.valueOf(packetParams[0])) {
					case COMMAND:
						commandParams = parseCommand(packetParams[3]);
						
						// Create multiThreader
						this.multiThread = new MultiThreading(ExecutionType.valueOf(packetParams[2]), this.numOfThreads, commandParams);
						
						// Run multiThreader
						this.multiThread.multiCoreExecute();

						if (this.multiThread.isFound()) 
							System.out.println("Password is: " + this.multiThread.result());
						else 
							System.out.println("Could not find password; replying to server");
						
						sendResults(Status.COMPLETE, this.multiThread.result(), commandParams[2], commandParams[3]);
											
						break;
					
					case SHUTDOWN:
						this.shutdown = true;
						break;
												
					case STOP:
						stopProcesses();
						break;
						
					default:
						System.err.println("Client does not understand this Status");
						break;
				}
			}

		} catch (UnknownHostException e) {
			System.err.println("UnknownHostException caught in Client Code: " + e.getMessage());
		} catch (IOException e) {
			System.err.println("IOException caught in Client Code: " + e.getMessage());
		} finally {

		}
	}