2)loadrunner做winsocket测试的基本步骤:
/********************************************************************* * Created by Mercury Interactive Windows Sockets Recorder * * Created on: Mon Dec 29 09:01:03 *********************************************************************/ #include "lrs.h" Action() { int i; char *buffer;//定义字符指针 int numberOfBytes;//定义int型变量保存长度 //这是第一步initializes a socket lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=127.0.0.1:1234",LrsLastArg); lr_start_transaction("send"); //这里是第二步,通过建立的socket1将buf1中的数据发送给远端MM-7QL3Z0JYUJN6用户,端口2425 lrs_send("socket0", "buf1", LrsLastArg); //输出缓冲区数据大小 lrs_send("socket0", buffer, LrsLastArg); //从buf2中接收返回的数据 lrs_receive("socket0", "buf2", LrsLastArg); //取得缓冲区数据 lrs_get_buffer_by_name("buf2", &buffer, &numberOfBytes); //输出缓冲区数据大小 lr_output_message("The buffer's size is: %d/n", numberOfBytes); lr_output_message(buffer); lr_end_transaction("send", LR_AUTO); //第三步关闭释放socket连接 lrs_close_socket("socket0"); return 0; } |
上面的代码的注释很明确了,不过需要注意一点的是,loadrunner中lrs_send中的缓存的buf需要在data.ws中定义,不能是程序中定义的字符串。
data.ws
;WSRData 2 1
send buf0
recv buf1 101
recv buf2 210
recv buf3 300
-1
3)对winsocket编程的一些函数的解释
①lrs_set_send_buffer("socket0",send_loginStr,strlen(send_loginStr));
lrs_set_send_buffer将程序中定义的字符串放入data.ws第一个定义的send bufx中,如上面的data.ws中定义的为buf0,则是将其方式buf0中,不管调用多少次,都是放入到buf0中。
②lrs_receive("socket0", "buf1", LrsLastArg);
lrs_get_last_received_buffer("socket0",&login_recv,&login_recvlen);
buf1定义的长度与实际接收的长度不一致没关系,loadrunner只会在输出中输出一个警告信息,但是不会影响实际接收的数据。警告信息为: Mismatch in buffer's length (expected 101 bytes, 222 bytes actually received, difference in 121 bytes)
该loadrunner测试代码在这里可以下载。