webbench源码注释教案.docxVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件:webbench.c/* * (C) Radim Kolar 1997-2004 * This is free software, see GNU Public License version 2 for * details. * * Simple forking WWW Server benchmark: * * Usage: * webbench --help * * Return codes: * 0 - sucess * 1 - benchmark failed (server is not on-line) * 2 - bad param * 3 - internal error, fork failed * */ #include socket.c#include unistd.h#include sys/param.h#include rpc/types.h#include getopt.h#include strings.h#include time.h#include signal.h/* values *//**注**:volatile是易变的,不稳定的意思。volatile是关键字,是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等,遇到这个关键字声明的变量,编译器对访问该变量的代码不再进行优化,从而可以提供对特殊地址的稳定访问。**/volatile int timerexpired=0;//根据测试时间判断是否超时int speed=0;//服务器响应数int failed=0;//请求失败数int bytes=0;//读取字节数/* globals */int http10=1; //http协议版本;0为http/0.9, 1为http/1.0, 2为 http/1.1/* Allow: GET, HEAD, OPTIONS, TRACE */#define METHOD_GET 0#define METHOD_HEAD 1#define METHOD_OPTIONS 2#define METHOD_TRACE 3#define PROGRAM_VERSION 1.5//定义HTTP请求方法GET,此外还支持OPTIONS、HEAD、TRACE方法int method=METHOD_GET;int clients=1;//并发数;由命令行参数-c指定,默认为1int force=0;//是否等待服务器应答int force_reload=0;//是否使用cache,默认为0,使用int proxyport=80;//代理服务器端口号,默认为80char *proxyhost=NULL;//代理服务器地址int benchtime=30;//测试时间;由命令行参数-t指定,默认为30s/* internal */int mypipe[2];//创建管道;用于父子进程间通信,读写数据char host[MAXHOSTNAMELEN];//主机名#define REQUEST_SIZE 2048char request[REQUEST_SIZE];//HTTP请求信息/**注**:struct option 类型数组。说明:该数据结构中的每个元素对应了一个长选项,并且每个元素是由四个域组成。通常情况下,可以按以下规则使用。第一个元素,描述长选项的名称;第二个选项,代表该选项是否需要跟着参数,需要参数则为1,反之为0;第三个选项,可以赋为NULL;第四个选项,是该长选项对应的短选项名称。另外,数据结构的最后一个元素,要求所有域的内容均为0,即{NULL,0,NULL,0}。结构中的元素解释如下:1)const char *name:选项名,前面没有短横线。譬如help、verbose之类。2)int has_arg:描述长选项是否有选项参数,如果有,是哪种类型的参数,其值见下表:符号常量 数值 含义no_argument 0 选项没有参数required_argument 1 选项需要参数optional_argument 2 选项参数是可选的3)int *flag:如果该指针为NULL,那么getopt_long返回val字段的值;如果该指针不为NULL,那么会使得它所指向的结构填入val字段的值,同时getopt_long返回04)int val:如果flag是NULL,那么val通常是个字符常量,如果短选项和长选项一致,那么该字符就应该与optstring中出现的

文档评论(0)

502992 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档