步骤1:创建一个send_buff.c文件:
//将所有16进制字符串,转为“\x”格式
int z=0;
int p;
char sernd_buf[2048];
char * send_buffer(char * send_Buffer)
{
int r;
char * send_psrc;
char send_dst[2048];
send_psrc=send_Buffer;
for(r=0;*send_psrc;r++){
strcpy(send_dst,"\\x");
strncat(send_dst,send_psrc,2);
send_psrc+=2;
for(p=0;p<strlen(send_dst);p++) {
sernd_buf[z++]=send_dst[p];
}
}
z=0;
return sernd_buf;
}
步骤2:在loadrunner中引入调用代码:
//vuser_init
#include "lrs.h"
#include "send_buff.c"
vuser_init()
{
char *ip;
int rc;
lrs_startup(257);
ip = lr_get_vuser_ip();
lr_output_message("The IP address is %s" , ip);
lr_save_string(ip,"ip_url");
if(ip){
lr_output_message("The IP address is %s" , ip);
rc=lrs_create_socket("socket6", "TCP", "RemoteHost=<ip_url>:5555", LrsLastArg);
if (rc==0){
lr_output_message("Socket was successfully created ");
}else{
lr_output_message("An error occurred while creating the socket, Error Code: %d", rc);
return -1;
}
}
else{
lr_message("IP spoofing disabled");
return -1;
}
return 0;
}
//action
#include "lrs.h"
Action()
{
char *Data;
int NumberOfBytes;
char buffer_2[2048]="48010021000508000200020003000100010001000283";
char * send_buffer_val;
send_buffer_val = send_buffer(buffer_2);
lr_output_message(">>>最终send_buffer>>>>>%s ",send_buffer_val);
lr_save_string(send_buffer_val,"Param_data");
lr_output_message(">>>>>>>>>>>>>>01:%s\n",lr_eval_string("<Param_data>"));
lr_save_int(strlen(lr_eval_string("<Param_data>"))/4,"Param_length");
lr_output_message(">>>>>>>>>>>>>>02:%s\n",lr_eval_string("<Param_length>"));
lrs_send("socket6", "buf5", LrsLastArg);
lrs_receive("socket6", "buf6", LrsLastArg);
lrs_get_last_received_buffer("socket6", &Data, &NumberOfBytes);
lr_output_message(">>>data>>>>>%x,%x,%x,%x ",Data[0],Data[1],Data[2],Data[3]);
if(NumberOfBytes == 4){
//lr_end_transaction("post", LR_PASS);
}else{
lr_output_message(">>>最终buffer2>>>>>%s ",buffer_2);
//lr_end_transaction("post", LR_FAIL);
}
return 0;
}
//vuser_end
#include "lrs.h"
vuser_end()
{
lrs_close_socket("socket6");
lrs_cleanup();
return 0;
}
步骤3:在data.ws中,进行参数化,并引入发送的数据内容,代码如下
;WSRData 2 1
send buf5 <Param_length>
"<Param_data>"
recv buf6 4
"\x48\x01\x03\x4c"
-1