private static void connectOption() 
			throws UnspecifiedErrorException, IOException, InvalidHeaderException {
		final Pattern pattern = Pattern.compile("(.+):(\\d+)");
		
		System.out.println(String.format("\n%s > %s >\n" , SHELL_TITLE, Options.CONNECT.getTitle()));
		
		boolean validInput;
		Matcher input = null;;
		
		do {
			
			System.out.print("Server details as 'hostname:port': ");
			
			String readString = in.nextLine();
			
			// Check if the input signifies a return to the main menu
			if (isReturnToMainMenu(readString)) { 
				return;
			}
			
			input = pattern.matcher(readString);
			validInput = input.lookingAt();
			
			if (!validInput) {
				System.out.println("Invalid entry, please re-enter the details.");
			}			
		} while (!validInput);
		
		System.out.println();
		
		boolean result = false;
		
		try {
			result = client.Connect(input.group(1), Integer.parseInt(input.group(2)));
		} catch (NumberFormatException e) { } catch (FullServerException e) {
			System.out.println(
					String.format("The client could not connect for the following reason:\n%s", 
							e.getMessage()));
		} catch (AlreadyOnlineException e) {
			System.out.println(
					String.format("The client could not connect for the following reason:\n%s", 
							e.getMessage()));
		}
		
		if (result) {
			System.out.println("The connection was successful.");
			
			menuOptions.clear();
			
			menuOptions.add(Options.MESSAGES);
			menuOptions.add(Options.QUEUES);
			menuOptions.add(Options.DISCONNECT);
		}
		else System.out.println("The connection was not successful.");
	}