|
最近做一个并发下载测试,模拟50个用户同时下载一个文件到本地。但是本地文件夹里边,只有一个文件,不是应该生成50个文件的吗?不知道怎么回事,求解!脚本如下:
Action()
{
int flen;//定义一个整型变量保存获得文件的大小
long filedes; //保存文件句柄
char file[1024]="\0";//保存文件路径及文件名
char * strNumber;//定义一个随机数
strNumber=lr_eval_string("{NewParam}");//Returns the string argument after evaluating embedded parameters.
strcat(file,"F:\\test\\");//将路径保存到file变量中
strcat(file,strNumber);//将获得的随机数拼接在file变量之后
strcat(file,".flv");//将下载的文件后缀名.flv拼接在file变量之后
web_set_max_html_param_len("9999999");//设置参数的最大长度,注意该值必须大于文件的大小
web_reg_save_param("fcontent",
"LB=",
"RB=",
"Search=BODY",
LAST);
//使用关联函数获取下载文件的内容,在这里不定义左右边界,获得服务器响应的所有内容
/*下载课件*/
lr_rendezvous("开始下载");
lr_start_transaction("下载文件");
web_url("XX767.flv",
"URL=http://video.gwybroad.com/gwy201311/XX767.flv",
"Resource=0",
"RecContentType=application/octet-stream",
"Referer=",
"Snapshot=t1.inf",
LAST);//发送下载课件的请求
flen = web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE);//获取响应中的文件长度
if(flen > 0)
{
//以写方式打开文件
if((filedes = fopen(file, "a+")) == NULL)
{
lr_output_message("打开文件失败!",lr_eval_string("{filecontent}"))
return -1;
}
//写入文件内容
fwrite(lr_eval_string("{fcontent}"), flen, 1, filedes);
fclose(filedes);//关闭文件
}
lr_end_transaction("下载文件",LR_AUTO);
return 0;
}
我怀疑是 if((filedes = fopen(file, "a+")) == NULL)这一句有问题,但不确定,也不知道怎么改。 |
|