之前,给大家分享了LoadRunner编写socket协议脚本的基本方法与规则,今天给大家分享下,如何从本地文件,读取内容,并作为报文,发送到服务端;该方法也是我在工作中遇到的一个难点,想通过这种方法,进行参数化几个交易的报文,通过迭代读取不同的文件,即可以发送不同的交易报文。

1. int和end与默认一致,不再做说明;

2. Action脚本编写

#include "lrs.h"

Action()
{ int rc,rv;//保存连接成功返回值
char *recvBuf;//保存接收数据的内容
int recvLen;//保存接收数据的大小 int count, total = 0;
char buffer[1000];
long file_stream;
char * filename = "E:/LR_date/ZHQZ/LR_scripts/baowen.txt";
if ((file_stream = fopen(filename, "rb")) == NULL ) {
lr_error_message ("Cannot open %s", filename);
return -1;
}
// Read until end of file
while (!feof(file_stream)) {
// Read 1000 bytes while maintaining a running count
count = fread(buffer,sizeof(char), 1000, file_stream);
lr_output_message ("%d bytes read", count);
// lr_output_message ("读取文件的buffer内容:\n %s", buffer);
if (ferror(file_stream)) { /* Check for file I/O errors */
lr_output_message ("Error reading file %s", filename);
break;
}
total += count; // Add up actual bytes read
}
// Display final total
lr_output_message ("Total number of bytes read = %d", total );
// Close the file stream
if (fclose(file_stream))
lr_error_message ("Error closing file %s", filename); // memcpy(buffer+271,lr_eval_string("<custID>"),8); lrs_save_param_ex("socket0", "user", buffer, 0, strlen(buffer),NULL, "paraBuf"); rc=lrs_create_socket("socket0","TCP","RemoteHost=188.123.123.233:1234", LrsLastArg); lr_start_transaction("测试");//事务开始 //发送socket请求消息(数据包内容放在data.ws中)
lrs_send("socket0", "buf1", LrsLastArg); //取缓冲区buf0的报文并发送 rv = lrs_receive("socket0", "buf2", LrsLastArg);//接收响应报文 //获取最后收到的buffer和大小
lrs_get_last_received_buffer("socket0",&recvBuf,&recvLen); /*设置检查点,验证返回数据是否成功,这个根据各交易具体情况进行判断,*/ if(recvLen>3)
{
lr_end_transaction("测试",PASS);
}
else
{
lr_end_transaction("测试",FAIL);
lr_error_message("测试失败!出错信息:[%s]",recvBuf);
} lrs_free_buffer(recvBuf);//释放recvBuf内存空间,否则会引起内存泄露 lrs_close_socket("socket0"); return 0;
}

  脚本上半部分是指定从某路径下,读取文件内容。有人要说那我如果想对文件中,某一字段进行参数化怎么办;于是我们就可以利用memcpy这个函数进行参数化,举例如:memcpy(buffer+271,lr_eval_string("<custID>"),8); //这是对读取报文的第272位到279位通过调用参数化池custID的值,共8位字节进行参数化。

3. data.ws编写

;WSRData 2 1

send  buf1 683
"<paraBuf>" recv buf2 350
""
-1

  其中,报文在Action中已经获取到,由lrs_save_param_ex函数关联存储到paraBuf参数中;此时,我们可以直接通过该参数名调用即可,如上。

ENDing...

  

LR编写Socket脚本方法2(从文件读取报文)的更多相关文章

  1. LR编写Socket脚本方法1(XML/16进制报文data.ws格式)

    本文主要讲述了Socket协议脚本的基础知识和编写方法,让大家能够在短时间内快速掌握简单的Socket协议脚本的编写方法.1.socket协议介绍Socket协议有万能协议之称,很多系统底层都是用的s ...

  2. loadrunner 编写socket脚本实例(附服务端实现)

    一.socket背景知识 这个咱就不废话了,网上一搜一大堆 二.本实例实现的功能 服务端接收客户端发送的字符串,并返回"5678succ"共8个字符 三.服务端实现(java代码) ...

  3. 使用LR编写HTTP协议Json报文格式接口脚本实战

    最近在做HTTP协议接口压测时,遇到一些编写脚本方面的问题,在这里总结记录下,以便以后温习,也希望能帮助到和我有同样困惑的朋友吧. //实战代码如下所示:Action() { lr_start_tra ...

  4. 品味性能之道<九>:利用Loadrunner编写socket性能测试脚本简述

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

  5. 提升jmeter脚本编写效率的方法:Fiddler导出jmx文件

    有效提升编写JMeter脚本效率的方法 jmeter的脚本来源有以下几种:badboy录制.jmeter自带的录制功能.手动编写脚本(使用fiddler/wireshark来抓包,然后构造协议写脚本) ...

  6. LoadRunner编写socket性能测试脚本

    利用LoadRunner编写socket性能测试脚本 一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socke ...

  7. 使用LR编写windows sockets协议xml报文格式脚本实战

    以下是测试脚本Demo: #include "lrs.h" Action() { char * resultCode;//结果代码 char * time; //系统时间 char ...

  8. Loadrunner 脚本开发-从文件读取数据并参数化

    脚本开发-从文件读取数据并参数化 by:授客 QQ:1033553122   直接上代码: char* testfn() { int count, total = 0; //char buffer[1 ...

  9. shell脚本编写自动启动服务方法

    shell脚本编写自动启动服务方法 前言 ln :创建连接文件 默认创建的是硬连接,好比复制 ,但是两个文件会同步命令:ln ./java/android/aa.txt aaa s :创建的是软连接变 ...

随机推荐

  1. Websphere设备、企业部署应用程序 【应用】

    Websphere设备.企业部署应用实例 环境 名称 版本号 Linux系统 CentOS-5.6-x86_64 Oracle软件 10201_database_linux_x86_64.cpio W ...

  2. Qt::WindowFlags枚举类型(Qt::Widget是独立窗口和子窗口两用的,Qt::Window会有标题栏)

    Qt::Widget : QWidget构造函数的默认值,如新的窗口部件没有父窗口部件,则它是一个独立的窗口,否则就是一个子窗口部件. Qt::Window : 无论是否有父窗口部件,新窗口部件都是一 ...

  3. python 垃圾回收装置

    转载: https://www.cnblogs.com/pinganzi/p/6646742.html 简要描述Python的垃圾回收机制(garbage collection). 答案 这里能说的很 ...

  4. 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题

    原文 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题 虽然微软宣称 Windows 10 将是最后一个 Windows 版本,但由于年代跨越 ...

  5. wpf版权限管理

    之前做的权限管理是基于Mvc的Web项目,模型.仓储及业务层次分明,6月中旬开始使用这套之前完成的底层架构开发Wpf版本的权限管理软件(后续将成熟企管系统进行抽象业务加入到该版本中,向企管系统靠近) ...

  6. HDU 3172 Virtual Friends 并与正确集中检查 -秩

    ll T; while(~scanf("%d",&T)){ while(T--) { = = ... 思路: 用秩合并,看了题解才发现 if(fx == fy)要输出当前集 ...

  7. Angular路由守卫 canDeactivate

    目的 离开页面时,做出逻辑判断 以ng-alain的项目为基础做演示 效果如图: 关键代码 定义一个CanDeactivateGuardService export class CanDeactiva ...

  8. .NET Core 3.0 Preview 5 亮点之一:发布单文件可执行程序

    在阅读 Announcing .NET Core 3.0 Preview 5 时发现了 .NET Core 3.0 Preview 5 的一个新特性 —— Publishing Single EXEs ...

  9. WPF之路——实现自定义虚拟容器(实现VirtualizingPanel)

    原文:WPF之路--实现自定义虚拟容器(实现VirtualizingPanel) 源码下载地址: http://download.csdn.net/detail/qianshen88/6618033 ...

  10. 【图文教程】de4dot实战字符串解密(演示:hishop微分销系统)

    原文:[图文教程]de4dot实战字符串解密(演示:hishop微分销系统) 前些日子,公司需求开发一个微分销系统,于是找来hishop微分销系统想借鉴一下,没想到里面各种加密,就连字符串也都加密了. ...