LoadRunner简单应用之:win/websockets通信中获取服务器返回数据
来源:互联网 发布:英语教育软件行业分析 编辑:程序博客网 时间:2024/06/18 00:23
通过socket进行通信的分布式应用是比较常见的,包括winsocket和websocket,LR支持这两个协议。
在使用LR回放socket协议的脚本时,可能会经常需要获取服务器返回的数据,语句格式如下:
lrs_create_socket("socket0", "TCP", "RemoteHost=1.2.3.4:12345", LrsLastArg); lrs_send("socket0", "buf0", LrsLastArg); lrs_receive("socket0", "buf1", LrsLastArg);
很明显,socket0是通信所用套接字,buf0是LR将要发送给服务器的内容(来自用户行为),buf1则接收服务器返回。
我们经常需要通过提取buf1中的内容,并适当的加一些断定语言,来判断这个通信操作有没有获取期望的数据。经常使用函数lrs_get_last_received_buffer,如下:
lrs_get_last_received_buffer("socket0", &ActualBuffer, &NumberOfBytes);
这样就把lrs_receive接收到的数据保存在了内存中(指针ActualBuffer指向的一个有LR自动动态分配的内存块),并返回数据长度(保存在NumberOfBytes中)。
然后就可以像使用用户自定义的数组一样使用该缓冲区,如ActualBuffer[0]。需要注意的是,使用完成后需要手动释放ActualBuffer指向的内存,通过调用lrs_free_buffer。
下面是一个简单示例,在处理服务器返回数据时,我们将其作为char数组处理,经过验证这是没问题的。
完整代码:
vuser_init.c
#include "lrs.h"vuser_init(){ lrs_startup(257); return 0;}
Action.c
/********************************************************************* * Created by Mercury Interactive Windows Sockets Recorder * * Created on: Tue Nov 12 14:51:33 *********************************************************************/#include "lrs.h"Action(){int NumberOfBytes=0;char *ActualBuffer; unsigned char num1,num2,num3,num4;unsigned int jifen =0;int dj =0 ;char * tmp;int i=0; lrs_create_socket("socket0", "TCP", "RemoteHost=10.15.107.12:12345", LrsLastArg); lrs_send("socket0", "buf0", LrsLastArg); lrs_receive("socket0", "buf1", LrsLastArg);/* Get the last received buffer and its size. */ lrs_get_last_received_buffer("socket0", &ActualBuffer, &NumberOfBytes); //7B 9C 0B 00 00 0F 00 02 6C 00 00 00 08 00 90 5F 01 00 0D 00 00 00,从第偏移量17取数,直到14,作为积分;偏移量18为等级。lr_output_message("The last buffer's size is:%d/n", NumberOfBytes); num1 = ActualBuffer[17]; //最高位num2 = ActualBuffer[16];num3 = ActualBuffer[15];num4 = ActualBuffer[14]; //最低位lr_output_message("num1 = %d,num2 = %d,num3 = %d,num4 = %u\n",num1,num2,num3,num4); jifen = (num1 / 16 ) * 268435456 + (num1 % 16)* 16777216 + (num2 / 16)* 1048576 +(num2 % 16) * 65536 +(num3 / 16) * 4096 + (num3 % 16 ) * 256 +(num4 / 16)* 16 + (num4 % 16) * 1; //注意00 90 5F 01是16进制格式,其中01(num1)是最高位。dj=(int)ActualBuffer[18];lrs_free_buffer(ActualBuffer); lr_output_message("jifen = %d\n",jifen ); lr_output_message("dj = %d\n",dj ); lrs_close_socket("socket0"); return 0;}
vuser_end.c
#include "lrs.h"vuser_end(){ lrs_cleanup(); return 0;}
- LoadRunner简单应用之:win/websockets通信中获取服务器返回数据
- Activity通信之返回数据
- LoadRunner简单应用之:关联HTTP请求
- HttpUrlConnection获取服务器数据,并返回数据
- ajax简单应用之动态获取服务器时间
- LoadRunner脚本优化之服务器返回内容正确性判断
- Android应用开发之获取web服务器xml数据
- Android应用开发之获取web服务器xml数据
- 【LoadRunner】场景加压时,无法获取Windows服务器监控数据
- html5 webSockets实时通信
- .net通过url访问服务器获取服务器返回数据
- LoadRunner简单应用之:C++ DLL的实现及调用
- Loadrunner中关于C 指针的简单应用
- AJAX MVC 服务器返回Json数据,客户端获取Json数据
- 网络通信框架Volley之二——访问服务器获取Json.xml数据和详细的解析数据
- LoadRunner如何获取web_submit_data的返回值
- LoadRunner如何获取web_submit_data的返回值
- Activity通信 之 获取Activity的返回结果
- mysql prepare语句使用
- rqnoj-314-[NOIP2000]方格取数-多线程dp
- SQLSERVER 创建ODBC 报错的解决办法 SQLState:'01000'
- 使用opencv 录摄像头数据到文件
- Mysql-Truncated incorrect time value: '1000:59:44'
- LoadRunner简单应用之:win/websockets通信中获取服务器返回数据
- Linux 主机名被修改成bogon问题
- mysql学习入门
- Java中的Timer和TimerTask的使用
- Java根据sessionId获取Session对象
- 系统偏好-共享-web sharing 无法打开,黄灯一闪即灭
- Drainage Ditches
- string类介绍
- 标准C++中的string类的用法总结