编写步骤

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. Oracle锁处理、解锁方法

    1.查询锁情况 select sid,serial#,event,BLOCKING_SESSION from v$session where event like '%TX%'; 2.根据SID查询具 ...

  2. Java多线程入门知识点梳理

    前言 在多核时代,高并发时代,对系统并行处理能力有很高要求.多线程就是这个时代最好的产物.通过使用多线程可以增强系统并行处理能力,提高CPU资源的有效利用:从而提高系统的处理能力.常见应用场景如:多窗 ...

  3. JS常见算法题目

      最近收集了几个经典JS题目,比较有代表性,分享一下:   1.xiaoshuo-ss-sfff-fe  变为驼峰xiaoshuoSsSfffFe function getCamelCase(str ...

  4. JQuery 同时获取多个标签的指定内容并储存为数组

    在网页开发中经常会碰到获取同种类型的 标签 的值得问题,比如下面的两种情况. 当需要批量获取同种标签的指定值时,新人就会碰上一点小麻烦. 比如 id=problem1的demo var list1=$ ...

  5. sql 事务处理 与 try catch

    begin transaction tr declare @error int; ; select * from Car_Brand set @error=@error+@@ERROR set @er ...

  6. Python学习 :多线程 --- 锁

    多线程 什么是锁? - 锁通常被用来实现对共享资源的同步访问. - 为每一个共享资源创建一个Lock对象,当你需要访问该资源时,调用acquire方法来获取锁对象(如果其它线程已经获得了该锁,则当前线 ...

  7. Leecode刷题之旅-C语言/python-263丑数

    /* * @lc app=leetcode.cn id=263 lang=c * * [263] 丑数 * * https://leetcode-cn.com/problems/ugly-number ...

  8. vim 多个文件切换

    打开多个文件:1.vim还没有启动的时候:在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:open file可以再打开一个文件,并且 ...

  9. PHP学习笔记之析构函数以及static,self,parent关键字

    引用 $jordan1 = &$jordan; 当jordan1 = null; //此时会直接调用析构函数 而当无&时,就需要等到所有的引用都为null时,才调用析构函数析构  乔丹 ...

  10. [note]左偏树(可并堆)

    左偏树(可并堆)https://www.luogu.org/problemnew/show/P3377 题目描述 一开始有N个小根堆,每个堆包含且仅包含一个数.接下来需要支持两种操作: 操作1: 1 ...