public static AgentConfigData parseCli(String[] args)
      throws UnknownHostException, MalformedURLException {

    String dumpFile = null;
    String listenAddr = "127.0.0.1";
    int listenPort = 1691;

    for (int i = 0; i < args.length; i++) {
      if ("-d".equals(args[i]) || "--dump-file".equals(args[i])) {
        if (i + 1 >= args.length) {
          usage("You must specify at least a pathname or URL for the dump file.");
        } else {
          dumpFile = args[++i];
        }
      } else if ("-l".equals(args[i]) || "--listen-addr".equals(args[i])) {
        if (i + 1 >= args.length) {
          usage("You must pass an address argument when using " + args[i] + ".");
        } else {
          listenAddr = args[++i];
        }
      } else if ("-p".equals(args[i]) || "--port".equals(args[i])) {
        if (i + 1 >= args.length) {
          usage("You must pass a port number when using " + args[i] + ".");
        } else {
          listenPort = Integer.parseInt(args[++i]);
        }
      }
    }

    if (dumpFile == null) {
      usage("You must specify at least a pathname or URL for the dump file.");
    }

    return new AgentConfigData(dumpFile, listenAddr, listenPort);
  }