之前,给大家分享了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. VBS学习日记(二) 基础知识

    VBScript 基础知识 一.变量 1.全部单引號后面的内容都被解释为凝视.(在vbsedit中ctrl+m凝视,反凝视ctrl+shift+m) 2.在 VBScript 中,变量的命名规则遵循标 ...

  2. openresty: nginx worker不同请求之间共享数据

    To globally share data among all the requests handled by the same nginx worker process, encapsulate ...

  3. 在WPF中制作正圆形公章

    原文:在WPF中制作正圆形公章 之前,我利用C#与GDI+程序制作过正圆形公章(利用C#制作公章 ,C#制作公章[续])并将它集成到一个小软件中(个性印章及公章的画法及实现),今天我们来探讨一下WPF ...

  4. Ubuntu logomaker sh: 1: pngtopnm: not found 解决方案

    暂时未找到logomaker的方法,来解决 命令替换,在文件夹: pngtopnm open_show.png > temp.ppm ppmquant 224 temp.ppm >temp ...

  5. 使用FileStream向txt格式的文本文件 "追加" 新内容并读取

    原文:使用FileStream向txt格式的文本文件 "追加" 新内容并读取 //得到文件路径. static string filePath = AppDomain.Curren ...

  6. C# 异步委托的使用

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. QT的进程与线程(cmd /c的写法)

    该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 在前面的几节内容中讲解了Qt网络编程的一些基本内容,这一节来看一下在Qt中进程和线程的基本应 ...

  8. Win8Metro(C#)数字图像处理--2.12Sobel边缘检测

    原文:Win8Metro(C#)数字图像处理--2.12Sobel边缘检测  [函数名称] 图像Sobel边缘检测函数SobelEdgeProcess(WriteableBitmap src) [ ...

  9. PE格式大图

  10. Central Subscriber Model Explained

    原文 http://www.sqlrepl.com/sql-server/central-subscriber-model-explained/ The majority of SQL Server ...