public void startClient() {
        udpSocket = new UDPSocket(udpPort);
        MainClient.clientExecutionService.execute(udpSocket);
        
        try {
            socket = new Socket(host, tcpPort);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
	        } catch (UnknownHostException e) {
	            System.err.println("Don't know about host: " + host + ".");
	        } catch (IOException e) {
	            System.err.println("Couldn't get I/O for the connection to: " + host + ".\n" +
	            		"Please try again later!");
	            
	            ioNotFound = true;
	            shutdown();
	            // propper shutdown of the ExecutorService
	            MainClient.clientExecutionService.shutdown(); // Disable new tasks from being submitted
        }
        
        // just build if the connection to the server is ok.
        if (ioNotFound == false) {
        	String incommingMessage;
       	 
    	    ClientCommandListener commandListener = new ClientCommandListener(socket, udpPort, this);
    	    MainClient.clientExecutionService.execute(commandListener);
    	    
    	    try {
    	    	while((incommingMessage = in.readLine()) != null) {
    	    		// server shut down
    	    		if (incommingMessage.equals("shutdownServer")) {
    	    			System.out.println("Sorry, the Server just went offline, you have been logged out automatically. " +
					"Please press ENTER to shut down your Client and try to start it again later!");
    	    			shutdown();
    	    			ClientCommandListener.shutdown();
    	    		}
    	    		else {
    	    			System.out.println(incommingMessage);
    	    		}
    			}
    		} catch (IOException e) {
    			// empty- just is thrown when ending client
    		}
        }
	    
    }