使用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串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...
随机推荐
- linux上MongoDB安装部署
①下载安装包 mongodb-linux-x86_64-rhel62-3.6.3.tgz ②解压: tar zxvf mongodb-linux-x86_64-rhel62-3.6.3.tgz ...
- 描述性统计指标 - 众数 Mode
定义- 数值型数据 - 出现频数最多的变量值- 品质型数据.单项式分组数据 - 频数最多的组为众数组,该组的变量值(类型)就是众数- 组距式分组数据 - 频数最多的组为众数组,通过公式求得众数 - 公 ...
- 死磕 java集合之PriorityQueue源码分析
问题 (1)什么是优先级队列? (2)怎么实现一个优先级队列? (3)PriorityQueue是线程安全的吗? (4)PriorityQueue就有序的吗? 简介 优先级队列,是0个或多个元素的集合 ...
- 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历
异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...
- Shiro安全框架【快速入门】就这一篇!
Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro™ is a powerful and easy-to-use Java security framework that perfo ...
- synchronized关键字简介 多线程中篇(十一)
前面说过,Java对象都有与之关联的一个内部锁和监视器 内部锁是一种排它锁,能够保障原子性.可见性.有序性 从Java语言层面上说,内部锁使用synchronized关键字实现 synchronize ...
- JenKins使用pm2部署.net core网站
登录事先准备好的 Jenkins 1 新建任务 2 源码管理 git 输入正确地址 3 构建环境:Delete workspace before build startsAbort the build ...
- Java之Spring mvc详解
文章大纲 一.Spring mvc介绍二.Spring mvc代码实战三.项目源码下载四.参考文章 一.Spring mvc介绍 1. 什么是springmvc springmvc是sprin ...
- TCP的三次握手与四次挥手
TCP的三次握手与四次挥手 一.TCP(Transmission Control Protocol 传输控制协议) TCP是面向对连接,可靠的进程到进程通信的协议 TCP是提供全双工服务,即数据可在同 ...
- iOS----------demo总结
1.demo总结 2.第三方使用 一.demo总结 1.选择相册单张照片 二.第三方使用