编写步骤

1.建立与服务端的连接

rc=lrs_create_socket(“socket0”,”TCP”,”LocalHost=0”,”RemoteHost=127.0.0.1:8808”,LrsLastArg);

服务端地址和端口号

连接是否成功?

rc=0 表示建立连接成功

2.发送报文和接收报文

Lrs_send(“socket0”,”buf0”,LrsLastArg);

//由socket0 通道发送buf0里的数据

Lrs_receive(“socket0”,”buf1”,LrsLastArg);

//将socket通道返回的数据存放到buf1中

3.关闭连接

Lrs_close_socket(“socket0”);

//关闭socket0通道

完整脚本参考:

Action()

{

char*recvbuf;

intrecvlen=0;

intrc;

lr_start_transaction("Trans_socket");//事务

lrs_set_recv_timeout(60,0);//接收超时时间

lr_start_transaction("Conn_socket");

rc= lrs_create_socket("socket0", "TCP","LocalHost=0", "RemoteHost=127.0.0.1:8808",LrsLastArg);     //RemoteHost处填入被测程序所在服务器IP  

lr_output_message("rc=%d",rc);

if(rc != 0 ) {

lr_end_transaction("Conn_socket",LR_FAIL);

lr_end_transaction("Trans_socket", LR_FAIL);

return0;

}else{

lr_end_transaction("Conn_socket",LR_PASS); } //判断socket是否链接成功的事务

lr_rendezvous("集合点");

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

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

lrs_get_last_received_buffer("socket0",&recvbuf,&recvlen);//获取返回内容和返回长度

//判断报文长度是否正确

if(recvlen==304)

lr_end_transaction("Trans_socket",LR_PASS);

else

lr_end_transaction("Trans_socket", LR_FAIL);  //判断返回信息的长度是否正确,recvlen处填入预期返回信息的长度

lrs_close_socket("socket0");

return0;

}

关联函数介绍

lrs_save_searched_string();

在静态或接收到的缓冲区中搜索出现的字符串,将出现字符串的缓冲区部分保存到参数中

实例1:

原始数据为:"0|普通指令下达成功|10000031|"。

lrs_save_searched_string("socke0","buf1","wtbh","LB/BIN=|","RB/BIN=|",2,0,-1);

输出结果: "wtbh =10000013" 。在以左边界和右边界第2次出现的地方,获取左右边界里面的所有的值.

实例2:

原始数据为:"0|普通指令下达成功|10000031|"。

lrs_save_searched_string("socke0","buf1","wtbh","LB/BIN=|","RB/BIN=|",1,0,-1);

输出结果:"wtbh = 普通指令下达成功",在以左边界和右边界第1次出现的地方,获取左右边界里面的所有的值

实例3:

原始数据为:"0|普通指令下达成功|10000031|"

lrs_save_searched_string("socke0","buf1","wtbh","LB/BIN=|","RB/BIN=|",1,4,-1);

•   输出结果:"wtbh = 指令下达成功",在以左边界和右边界第1次出现的地方,获取左边界为起点的第4个字符后面的数据。

2.lrs_save_param();

将静态或接收到的缓冲区(或缓冲区部分)保存到参数中

实例:

lrs_save_param("socket0","buf1","wtbh",34, 8);

从数据包中第34个字符开始连续取8个字符。

loadrunner socket协议问题归纳(2)的更多相关文章

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

    首先让我们先看一下loadrunner- winsock 函数 一览表: lrs_accept_connection 接受侦听套接字连接 lrs_close_socket 关闭打开的套接字       ...

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

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

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

    一.概述         Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作.     二.socket概述         soc ...

  4. loadrunner socket协议问题归纳(1)

    前段时间测了loadrunner直接发送报文到socket上的性能测试.在此,稍微回顾整理下. 与socket通讯,有两种方式,一种是建立长连接,建立后,不停的发送,接收.另外一种是建立短连接,建立连 ...

  5. loadrunner socket协议问题归纳(5)

    获取服务器的返回值,可以用web_reg_save_param函数,该参数最好放到: 语法: int web_reg_save_param(const char *ParamName, <lis ...

  6. loadrunner socket协议问题归纳(4)---buffer接收变长和定长的数据

    测试场景:聊天系统 用户登录后,要先向服务器发送用户名,然后可以发送聊天信息,同时也可以接受聊天信息. 如果接受的字符为定长时,可以设定接受长度.recv buf2 66 #include " ...

  7. Loadrunner socket协议lrs_receive函数接收到返回数据包 仍然等待服务器返回--解决

    前段时间在使用loadrunner socket协议发送数据包到到服务器,使用lrs_receive接收服务器应答数据包,已经接收到数据包,但LR仍然在等待服务器端返回,而且日志打印显示每次接收返回都 ...

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

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

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

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

随机推荐

  1. 网站jcms流程分析

    本实例大致流程:基于jsp页面,通过servlet传递数据调用方法,利用service更改数据库.本文重点分析的是其中的两个小方法add()和delete(),来反映出反射机制的一个具体作用:减少Se ...

  2. Java并发编程(二)创建线程的三种方法

    进程与线程 1.  进程 进程和代码之间的关系就像音乐和乐谱之间的关系一样,演奏结束的时候音乐就不存在了但乐谱还在:程序执行结束的时候进程就消失了但代码还在,而计算机就是代码的演奏家. 2. 线程 线 ...

  3. activemq的高级特性:通配符式分层订阅

    activemq的高级特性之通配符式分层订阅 队列的名称可以分层:aa.bb.cc.dd 可以匹配:aa.bb.cc.dd,aa.*.cc.dd,aa.> *:匹配当前层的内容 >:任何一 ...

  4. thinkphp5.1 学习笔记 【多态关联】

    $result = Draft::update($input, ['id' => $input['id']], true); if (!empty(array_get($input, 'hous ...

  5. 安装mysql时出现initialize specified but the data directory has files in in.Aborting.该如何解决

    eclipse中写入sql插入语句时,navicat中显示的出现乱码(???). 在修改eclipse工作空间编码.navicate中的数据库编码.mysql中my.ini中的配置之后还是出现乱码. ...

  6. [FreeRTOS入门] 1.CubeMX中FreeRTOS配置参数及理解

    1.有关优先级 1.1 Configuration --> FreeRTOS MAX_PRIORITIES 设置任务优先级的数量:配置应用程序有效的优先级数目.任何数量的任务都可以共享一个优先级 ...

  7. 【python安装】Windows上安装和创建python开发环境

    1. 在 windows10 上安装python开发环境 Linux和Mac OS都自带python环境,但是Windows没有,所以需要自行安装. 第1步:访问 python官网,下载Windows ...

  8. linux使用docker-compose部署软件配置

    本篇将分享一些 docker-compose 的配置,可参考其总结自己的一套基于docker的开发/生产环境配置.下面话不多说了,来一起看看详细的介绍吧 安装docker及docker-compose ...

  9. 30. Insert Interval【LintCode by java】

    Description Given a non-overlapping interval list which is sorted by start point. Insert a new inter ...

  10. Linux入门进阶第二天——软件安装管理(上)

    一.大纲介绍 这里介绍的仅仅是两大家族之一的RPM,关于Debian家族的DPKG,请参考:http://justcoding.iteye.com/blog/1937171 二.简介 软件包分类: 源 ...