- #include <stdio.h>
- #include <unistd.h>
- #include <getopt.h>
- #define METHOD_GET 0
- #define METHOD_HEAD 1
- #define METHOD_OPTIONS 2
- #define METHOD_TRACE 3
- int method=METHOD_GET;
- int force=0;
- int force_reload=0;
- static const struct option long_options[]=
- {
- {"force",no_argument,&force,1},
- {"reload",no_argument,&force_reload,1},
- {"time",required_argument,NULL,'t'},
- {"help",no_argument,NULL,'?'},
- {"http09",no_argument,NULL,'9'},
- {"http10",no_argument,NULL,'1'},
- {"http11",no_argument,NULL,'2'},
- {"get",no_argument,&method,METHOD_GET},
- {"head",no_argument,&method,METHOD_HEAD},
- {"options",no_argument,&method,METHOD_OPTIONS},
- {"trace",no_argument,&method,METHOD_TRACE},
- {"version",no_argument,NULL,'V'},
- {"proxy",required_argument,NULL,'p'},
- {"clients",required_argument,NULL,'c'},
- {NULL,0,NULL,0}
- };
- void usage()
- {
- printf(
- "webbench [option]... URL\n"
- " -f|--force Don't wait for reply from server.\n"
- " -r|--reload Send reload request - Pragma: no-cache.\n"
- " -t|--time <sec> Run benchmark for <sec> seconds. Default 30.\n"
- " -p|--proxy <server:port> Use proxy server for request.\n"
- " -c|--clients <n> Run <n> HTTP clients at once. Default one.\n"
- " -9|--http09 Use HTTP/0.9 style requests.\n"
- " -1|--http10 Use HTTP/1.0 protocol.\n"
- " -2|--http11 Use HTTP/1.1 protocol.\n"
- " --get Use GET request method.\n"
- " --head Use HEAD request method.\n"
- " --options Use OPTIONS request method.\n"
- " --trace Use TRACE request method.\n"
- " -?|-h|--help This information.\n"
- " -V|--version Display program version.\n"
- );
- }
- int main(int argc, char *argv[])
- {
- int opt = 0;
- int longindex = 0;
- if(argc == 1)
- {
- usage();
- return 2;
- }
- while((opt=getopt_long(argc,argv,"912Vfrt:p:c:?h",long_options,&longindex))!=-1 )
- {
- switch(opt)
- {
- case 0 : break;
- case 'f': printf("f\n");break;
- case 'r': printf("r\n");break;
- case '9': printf("9\n");break;
- case '1': printf("1\n");break;
- case '2': printf("2\n");break;
- case 'V': printf("V\n");exit(0);
- case 't': printf("t\n");break;
- case 'p': printf("p\n");break;
- case ':': printf(":\n");break;
- case 'h': printf("h\n");break;
- case '?': usage();break;
- case 'c': printf("c\n");break;
- }
- }
- return 0;
- }