自行控制LoadRunner的socket协议性能测试

来源:互联网 发布:小米3qq健康 数据来源 编辑:程序博客网 时间:2024/05/01 10:14

使用LoadRunner录制windows application,启动一个新的SocketTool.exe,创建一个TCP Client,链接刚才启动的服务器,钩选上显示十六进制值,发送313233,别写空格进去,点击发送数据,然后再在服务器端发送点数据回客户端,最后客户端点击断开,脚本就录制完成了。

  脚本就四句:

lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=server:60000", LrsLastArg);
lrs_send("socket0", "buf0", LrsLastArg);
lrs_receive("socket0", "buf1", LrsLastArg);
lrs_close_socket("socket0");

  数据文件data.ws:

;WSRData 2 1
send  buf0 3
 "123"
recv  buf1 3
 "456"
-1

  后面的脚本就在此基础上修改了。

  ……………………

  查看全文请点击下载:http://www.51testing.com/html/56/n-811856.html

  5、发送自己定义的数据包

  建立链接我就不写了,发送自己定义的数据包:

lrs_set_send_buffer("socket0", (char *)cOut, strlen(cLine)/2 ); 
lrs_send("socket0", "buf0", LrsLastArg);

  说明:

  (1)(char *)cOut 是因为函数的参数定义

  int lrs_set_send_buffer ( char *s_desc, char *buffer, int size );

  (2)strlen(cLine)/2不可写为strlen(cOut),一定要牢牢记住这里不是发送的字符串,而是一个二进制数据包;

  6、接收数据包到自定义缓冲区

  代码:

char *BufVal;              //记录接收到的数据包
int intGetLen=0;           //记录接收数据包的长度

lrs_receive_ex("socket0", "buf1", "NumberOfBytesToRecv=4", LrsLastArg);
lrs_get_last_received_buffer("socket0",&BufVal, &intGetLen);

  说明:

  (1)intGetLen必须定义为int,而不可是long,为啥?函数定义决定的:

  int lrs_get_last_received_buffer ( char *s_desc, char **data, int *size );

  (2)"NumberOfBytesToRecv=4"此处loadrunner的帮助中例子写错了,当时我照着粘贴下来,死活报那个恐怖的<memory violation : Exception ACCESS_VIOLATION received>,后来仔细看了看,明白了,例子上NumberOfBytesToRecv前面多了一个空格,删除了就可以了;

  (3)定义接收数据包长度,这个参数只适应于TCP协议,UDP就不行了

          (4)剩余见附件

注:该文章是转载,仅供学习参考

0 0