#include "lrs.h"

vuser_init()
{

char *ip;
int handler;

//编写获取LR分配的Vuser IP函数,将IP保存在ip变量中。
ip=lr_get_vuser_ip();

if(ip)

lr_vuser_status_message("the ip address is %s:",ip);
else

lr_vuser_status_message("IP spooler disabled");

//输出获取到lr分配的ip值。
lr_output_message("the current assign ip is :%s",ip);

//将ip变量保存到一个参数中,并输出该参数的值。
lr_save_string(ip,"VirtualIP");
lr_output_message( lr_eval_string("{VirtualIP}"));

//在lrs_create_socket函数中localhost使用<>:<>形式来参数化
lrs_create_socket("socket0","TCP","LocalHost=<VirtualIP>:<RandomPort>","RemoteHost=5.5.5.5:8888",LrsLastArg);

//输出socket句柄号

handler=lrs_get_socket_handler("socket0");
lr_message("The current handler of sokcet0 is: %d",handler);

lrs_startup(257);

return 0;
}

########################################################################

#include "lrs.h"

Action()
{

char *ReturnValue_Remote;
char *ReturnPort_Remote;
char *ReturnValue_Local;
char *ReturnPort_Local;
char *AcutalBuffer_Send;
int BufferSize_Send;
char *AcutalBuffer_Revc;
int BufferSize_Revc;

int flag_send;
int flag_revc;

//int match_length;

//###########获取远程主机及本地主机IP及端口号################

ReturnValue_Remote=lrs_get_socket_attrib("socket0",REMOTE_ADDRESS);
ReturnPort_Remote=lrs_get_socket_attrib("socket0",REMOTE_PORT);
ReturnValue_Local=lrs_get_socket_attrib("socket0", LOCAL_ADDRESS);
ReturnPort_Local=lrs_get_socket_attrib("socket0",LOCAL_PORT);

lr_start_transaction("获取远程主机地址及端口");

lr_output_message("this RemoteHost address is %s :", ReturnValue_Remote);

lr_output_message("this RemoteHost Port is %s : ",ReturnPort_Remote);

lr_end_transaction("获取远程主机地址及端口", LR_AUTO);

lr_start_transaction("获取本机地址及端口");

lr_output_message("this LocalHost address is %s :", ReturnValue_Local);

lr_output_message("this LocalHost Port is %s : ",ReturnPort_Local);

lr_end_transaction("获取本机地址及端口", LR_AUTO);

//##############发送心跳包##########################

lr_think_time(3);

lr_start_transaction("发送数据包");

lrs_set_send_timeout(3,0);

flag_send=lrs_send("socket0","buf0",LrsLastArg);

lr_end_transaction("发送数据包", LR_AUTO);

if (flag_send==0)
{
lr_output_message("buf0缓冲数据发送成功!");
}
else
lr_output_message("buf0缓冲数据发送超时!");

//##############获取发送BUFF数据及大小###################

lr_start_transaction("获取BUFF数据大小及内容");

lrs_get_buffer_by_name("buf0",&AcutalBuffer_Send,&BufferSize_Send);

lr_output_message("buf0 size is %d :",BufferSize_Send);

lrs_save_param_ex("socket0","user",AcutalBuffer_Send,0,BufferSize_Send,"ascii","param_send");

lr_output_message("the contect buf0 is %s :",lr_eval_string("<param_send>"));

lr_end_transaction("获取BUFF数据大小及内容", LR_AUTO);

lrs_free_buffer("AcutalBuffer_Send");

//#####################接收数据包###########################

// lrs_set_recv_timeout(15,0);

lr_start_transaction("接收数据包");

lrs_set_recv_timeout2(15,0);

flag_revc=lrs_receive("socket0","buf1",LrsLastArg);

lr_end_transaction("接收数据包", LR_AUTO);

if (flag_revc==0)
{

lr_output_message("接收数据成功!");
}
else
lr_output_message("接收数据失败!");

//#################获取接收BUFF大小及内容#######################

lr_start_transaction("获取接收数据大小及内容");

lrs_get_last_received_buffer("socket0",&AcutalBuffer_Revc,&BufferSize_Revc);

lr_output_message("the size of last buffer is %d :",BufferSize_Revc);

lrs_save_param_ex("socket0","user",AcutalBuffer_Revc,0,BufferSize_Revc,"ascii","param_revc");

lr_output_message("the contect of last received buffer is %s :",lr_eval_string("<param_revc>"));

lr_end_transaction("获取接收数据大小及内容", LR_AUTO);

if (BufferSize_Revc==11) {

lr_output_message("接收到的数据长度为心跳包长度11个字节!");

}

else
lr_output_message("心跳包长度不相等");

//lrs_free_buffer("AcutalBuffer_Revc");

if (BufferSize_Revc>1024) {

lr_message("接收过来数据过大,不为心跳包数据,故关闭SOCKET");

lrs_free_buffer("AcutalBuffer_Revc");

//lrs_close_socket("socket0");
}

lr_output_message("当前第%s次迭代已结束",lr_eval_string("<lteration>"));

lr_message("当前第%s迭代已结束,系统输出时间为:%s",lr_eval_string("<lteration>"),lr_eval_string("<localtime_now>"));

return 0;
}

##############################################

#include "lrs.h"

vuser_end()
{

lrs_disable_socket("socket0",DISABLE_SEND);

lrs_close_socket("socket0");

lrs_cleanup();

return 0;
}

##################################################

;WSRData 2 1

send buf0 11
"\x41\x45\x48\x50\x0B\x00\x00\x00\x01\xFF\xFF"
recv buf1 11
-1

loadrunner使用socket协议来实现客户端对服务器产生压力实例。(通过发送心跳包,达到连接多个客户端的目的)的更多相关文章

  1. 自行控制loadrunner的socket协议性能测试 (转)

    一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字符串转换为十六进制数据包 发送自己定义的数据包 接收数据包到自定义缓冲 ...

  2. Loadrunner 中socket协议RecvBuffer接收到数据长度为空

    socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...

  3. LoadRunner编写Socket协议脚本方法

    本文主要介绍使用LoadRunner手工编写Windows Socket协议测试脚本的方法. 通过LoadRunner编写Windows Socket协议测试脚本,总体说来,比较简单.就像把大象放进冰 ...

  4. Loadrunner中socket协议中的三个关联函数

    这3个函数其实都可以动态获取运行中收到的数据包中的数据,只要跟在要获取的收取数据包脚本后面即可.其中:lrs_save_searched_string和lrs_save_param如果buf_desc ...

  5. 模拟客户端向服务器发起请求(从Fiddler抓包到Jmeter接口测试)

    一.安装Fiddler 二.配置 在菜单栏Tools->Fiddler Options->Connections,勾选Allow remote computers to connect,默 ...

  6. loadrunner socket协议问题归纳(3)

    摘要:通过实例讲解loadrunner中的socket协议性能测试的一种测试方法,如何不依赖loadrunner既定规则,自行控制收发数据包 关键词:Loadrunner,socket,自行控制,收发 ...

  7. [转] Socket心跳包异常检测的C语言实现,服务器与客户端代码案例

    转载自:zxh2075的专栏 在Socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能较大.本文实现的是由客户端给服务器发送心跳包,服务器不必返 ...

  8. Socket心跳包异常检测的C语言实现,服务器与客户端代码案例

    在Socket心跳机制中,心跳包可以由服务器发送给客户端,也可以由客户端发送给服务器,不过比较起来,前者开销可能较大.本文实现的是由客户端给服务器发送心跳包,服务器不必返回应答包,而是通过判断客户在线 ...

  9. java Socket 长连接 心跳包 客户端 信息收发 demo

    今天写了个socket的测试小程序,代码如下 import java.io.IOException; import java.io.InputStream; import java.io.Output ...

随机推荐

  1. 万恶的tileMap

    先吐槽下.. 本来,我们准备用tileMap来做地图的,但发现一个问题,就是tileMap层中不能添加cc.Sprite,这导致了tileMap只适合做2D平面没有遮挡的游戏,并且主角是不能有效率的进 ...

  2. 4.当接口的请求方式为 application/json的时候时

    1..当接口的请求方式为 application/json的时候时,使用抓包软件(fiddler)获取到这个接口, 其中的Inspectprs-TextView中的内容就是jmeter中Body Da ...

  3. ARM裸板调试思路总结、笔记

    1. 点灯 2. 串口打印 3. JTAG调试器3.1 命令行调试 3.2 源码级别的调试前提a. 程序必须已经重定位好,位于它的链接地址a.1 如果程序的链接地址是SDRAM, 使用openocd初 ...

  4. CodeForces 703B Mishka and trip

    简单题. 先把环上的贡献都计算好.然后再计算每一个$capital$ $city$额外做出的贡献值. 假设$A$城市为$capital$ $city$,那么$A$城市做出的额外贡献:$A$城市左边城市 ...

  5. Vanya and Field

    Vanya and Field 题目链接:http://www.codeforces.com/problemset/problem/492/E 逆元 刚看到这题的时候一脸懵逼不知道从哪下手好,于是打表 ...

  6. 读书笔记之C# delegate

    c#代理的使用主要在:需要将一个方法当做参数传递到另一个方法时. 比如启动一个线程执行任务,而这个线程要执行的方法可以通过代理传递过来. 代理包括一个方法或者多个方法的地址和C++的函数指针很相似,但 ...

  7. Struts对输入数据的校验

    当我们在登录或者是注册时需要对用户输入的数据验证,以前都是浏览器传送数据到后台,后台对数据进行校验,如果有错误就带着错误信息转发带登录或者注册页面, struts可以简便的对输入数据进行校验 首先我们 ...

  8. STORM在线业务实践-集群空闲CPU飙高问题排查

    源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲 ...

  9. HUST 1352 Repetitions of Substrings(字符串)

    Repetitions of Substrings Description The “repetitions” of a string S(whose length is n) is a maximu ...

  10. .Net Core 中使用AutoMapper

    1.新建一个类 using AutoMapper; using YourModels; using YourViewModels; namespace YourNamespace { public c ...