以下是测试脚本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报文格式脚本实战的更多相关文章

  1. Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本

    脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...

  2. ARP协议的报文格式 转自n哖苡逅

    ARP协议的报文格式 结构ether_header定义了以太网帧首部:结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答:ether_arp结构除了包含arphdr ...

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

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

  4. 结合Wireshark捕获分组深入理解TCP/IP协议栈之TCP协议(TCP报文格式+三次握手实例)

    摘要:     本文简单介绍了TCP面向连接理论知识,详细讲述了TCP报文各个字段含义,并从Wireshark俘获分组中选取TCP连接建立相关报文段进行分析. 一.概述     TCP是面向连接的可靠 ...

  5. ARP协议的报文格式

    原文链接地址:http://www.cnblogs.com/laojie4321/archive/2012/04/12/2444187.html   结构ether_header定义了以太网帧首部:结 ...

  6. PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)

    开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送 ...

  7. HTTP协议-响应报文格式

    HTTP协议-响应码 浏览器向服务器发出请求,服务器处理可能是成功.可能是失败.可能没有权限访问等原因,服务器会通过响应码来告诉浏览器处理结果. " : OK " : Found ...

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

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

  9. Java开发笔记(一百零九)XML报文的定义和解析

    前面介绍了JSON格式的报文解析,虽然json串短小精悍,也能有效表达层次结构,但是每个元素只能找到对应的元素值,不能体现更丰富的样式特征.比如某个元素除了要传输它的字符串文本,还想传输该文本的类型. ...

随机推荐

  1. linux上MongoDB安装部署

    ①下载安装包 mongodb-linux-x86_64-rhel62-3.6.3.tgz   ②解压: tar zxvf mongodb-linux-x86_64-rhel62-3.6.3.tgz   ...

  2. 描述性统计指标 - 众数 Mode

    定义- 数值型数据 - 出现频数最多的变量值- 品质型数据.单项式分组数据 - 频数最多的组为众数组,该组的变量值(类型)就是众数- 组距式分组数据 - 频数最多的组为众数组,通过公式求得众数 - 公 ...

  3. 死磕 java集合之PriorityQueue源码分析

    问题 (1)什么是优先级队列? (2)怎么实现一个优先级队列? (3)PriorityQueue是线程安全的吗? (4)PriorityQueue就有序的吗? 简介 优先级队列,是0个或多个元素的集合 ...

  4. 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...

  5. Shiro安全框架【快速入门】就这一篇!

    Shiro 简介 照例又去官网扒了扒介绍: Apache Shiro™ is a powerful and easy-to-use Java security framework that perfo ...

  6. synchronized关键字简介 多线程中篇(十一)

    前面说过,Java对象都有与之关联的一个内部锁和监视器 内部锁是一种排它锁,能够保障原子性.可见性.有序性 从Java语言层面上说,内部锁使用synchronized关键字实现 synchronize ...

  7. JenKins使用pm2部署.net core网站

    登录事先准备好的 Jenkins 1 新建任务 2 源码管理 git 输入正确地址 3 构建环境:Delete workspace before build startsAbort the build ...

  8. Java之Spring mvc详解

    文章大纲 一.Spring mvc介绍二.Spring mvc代码实战三.项目源码下载四.参考文章   一.Spring mvc介绍 1. 什么是springmvc   springmvc是sprin ...

  9. TCP的三次握手与四次挥手

    TCP的三次握手与四次挥手 一.TCP(Transmission Control Protocol 传输控制协议) TCP是面向对连接,可靠的进程到进程通信的协议 TCP是提供全双工服务,即数据可在同 ...

  10. iOS----------demo总结

    1.demo总结           2.第三方使用 一.demo总结 1.选择相册单张照片 二.第三方使用