使用LR编写windows sockets协议xml报文格式脚本实战
以下是测试脚本Demo:
#include "lrs.h" Action()
{
char * resultCode;//结果代码
char * time; //系统时间
char * errorInfo;
int rc; lr_start_transaction("事物"); //设置socket连接超时时间
lrs_set_connect_timeout(, ); rc=lrs_create_socket("socket", "TCP", "LocalHost=0", "RemoteHost=IP:port", LrsLastArg); //lr_output_message("rc=%d",rc); if(rc != ){
lrs_close_socket("socket");
lr_end_transaction("事物", LR_FAIL);
lr_error_message("创建socket失败!"); return ; }
//发送请求buf
lrs_send("socket", "buf2", LrsLastArg); //设置socket接受内容的超时时间,如果请求处理时间超出LR默认的120秒,将无法接收到响应内容,因此我们可以根据实际需要设置可接受的超时时间来获取响应信息。
lrs_set_recv_timeout(, );
//接收响应buf
lrs_receive("socket", "buf3", LrsLastArg);
//从接收到的响应buf中截取指定字段长度,用以断言请求是否处理成功
lrs_save_searched_string("socket",NULL,"Result","LB/BIN=<retCd>",NULL,,,);
//lrs_save_searched_string("socket",NULL,"ErrorInfo","LB/BIN=<desc>","RB/BIN=</desc>",1,0,-1);
//关闭socket连接
lrs_close_socket("socket"); resultCode = lr_eval_string("{Result}");
//errorInfo =lr_eval_string("{ErrorInfo}"); //lr_output_message("结果代码 = %s",resultCode); if(strcmp(resultCode,"") == ){
lr_end_transaction("事物", LR_PASS); }else{
lr_end_transaction("事物", LR_FAIL); //lr_error_message("retCd:%s ,desc:%s",resultCode,errorInfo);
//lr_save_datetime("%Y_%m_%d %H:%M:%S", DATE_NOW + TIME_NOW, "time");
//lr_error_message("时间 = %s",lr_eval_string("<time>"));
} // lr_end_transaction("事物",LR_AUTO); return ;
}
data.ws部分:
;WSRData 1 //固定格式 send buf2 724 //发送buf长度
//报文样例
"00000724<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<transaction>"
"<header>"
"<ver>1.0</ver>"
"<msg>"
"<callTyp>1231</callTyp>"
"</msg>"
"</header>"
"<body>"
"<request>"
"<ReqBaseHdr>"
"<ChnlCD>er</ChnlCD>"
"</request>"
"</body>"
"</transaction>" recv buf3 17311 //接收响应buf长度 -1 //固定格式
data.ws部分主要介绍两点:
1. 如何计算报文长度?
如下所示,报文长度是8位数,当我们不知道报文精确长度时,可以给一个预估大小,然后把脚本的扩展日志3个选项都勾选上,然后执行脚本,
查看LR控制台日志,如下图所示:

从日志打印sent buffer 可以看出,报文长度我指定的是724个字节,日志提示将发送732字节到socket,也就是说724(实际报文长度)=732 - 8(8位报文长度),
已实验多次很准, 同样的接收报文的长度计算也是如此。需要注意的是,如果你send的报文应用程序解析失败或抛异常,很可能是你报文长度计算有误导致。
如果依然不确定长度,也可以借助UE编辑工具查看报文所占字节数,如下图所示,在UE右下角查看文件大小。或者通过查看应用日志排查是否报文发送正常。

2.LR存放报文的格式问题:
XML头部必须使用转义符\ 。如示例中的<?xml version=\"1.0\" encoding=\"UTF-8\"?>
报文 " "之间存在空格。如"<transaction> "之间存在空格应用程序可能无法正确解析报文,这里需要注意。
使用LR编写windows sockets协议xml报文格式脚本实战的更多相关文章
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- ARP协议的报文格式 转自n哖苡逅
ARP协议的报文格式 结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr ...
- 使用LR编写HTTP协议Json报文格式接口脚本实战
最近在做HTTP协议接口压测时,遇到一些编写脚本方面的问题,在这里总结记录下,以便以后温习,也希望能帮助到和我有同样困惑的朋友吧. //实战代码如下所示:Action() { lr_start_tra ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)
摘要: 本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述 TCP是面向连接的可靠 ...
- ARP协议的报文格式
原文链接地址:http://www.cnblogs.com/laojie4321/archive/2012/04/12/2444187.html 结构ether_header定义了以太网帧首部:结 ...
- PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)
开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送 ...
- HTTP协议-响应报文格式
HTTP协议-响应码 浏览器向服务器发出请求,服务器处理可能是成功.可能是失败.可能没有权限访问等原因,服务器会通过响应码来告诉浏览器处理结果. " : OK " : Found ...
- LR编写Socket脚本方法1(XML/16进制报文data.ws格式)
本文主要讲述了Socket协议脚本的基础知识和编写方法,让大家能够在短时间内快速掌握简单的Socket协议脚本的编写方法.1.socket协议介绍Socket协议有万能协议之称,很多系统底层都是用的s ...
- Java开发笔记(一百零九)XML报文的定义和解析
前面介绍了JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...
随机推荐
- Java开源生鲜电商平台-安全设计与架构(源码可下载)
Java开源生鲜电商平台-安全设计与架构(源码可下载) 说明:Java开源生鲜电商平台是一个B2B的生鲜电商平台,由于是APP的一种模式,所以安全方面一般会思考以下几个维度: 1.数据安全. 2.传输 ...
- Oracle系列-锁表与解锁解决方案(基础版)
[Oracle锁表查询和解锁解决方案] 一.了解原因(借鉴整理) 数据库操作语句的分类 DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert.delete.upd ...
- java基础系列之ConcurrentHashMap源码分析(基于jdk1.8)
1.前提 在阅读这篇博客之前,希望你对HashMap已经是有所理解的,否则可以参考这篇博客: jdk1.8源码分析-hashMap:另外你对java的cas操作也是有一定了解的,因为在这个类中大量使用 ...
- eShopOnContainers 知多少[10]:部署到 K8S | AKS
1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我 ...
- mysql怎样配置ODBC数据源
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成.所以说mysql配置ODBC数据源也很重要. 工具/原料 ...
- 【工具篇】Selenium 学习实践(一)环境搭建
一.环境搭建 (1)初学者最佳环境: Python 2.7 + Selenium 2+ Firefox 46 (2)喜欢尝新的环境: Python 3.6 + Selenium 3+ Firefox ...
- elasticsearch6.6.2在Centos6.9的安装
JDK8 做个记录,以防以后忘记能够查看. 1.elastic是java编写的,先搭建运行环境,6.6.2版本必须要jdk8以上版本才可运行,先官网下载jdk,上传服务器 https://www.or ...
- 数据结构与算法(十):红黑树与TreeMap详细解析
本文目录 一.为什么要创建红黑树这种数据结构 在上篇我们了解了AVL树,既然已经有了AVL这种平衡的二叉排序树,为什么还要有红黑树呢? AVL树通过定义我们知道要求树中每一个结点的左右子树高度差的绝对 ...
- C# ASP.NET MVC:使用Cookie记住账号密码
MVC记住账号密码 使用cookie操作 前端: <div> 用户名:<input type="text" id="UserName" val ...
- 浅谈CSS3 box-sizing 属性 有趣的盒模型
盒模型的组成大家肯定都懂,由里向外content,padding,border,margin. 盒模型是有两种标准的,一个是标准模型,一个是IE模型. 从上面两图不难看出在标准模型中,盒模型的宽高只是 ...