首先让我们先看一下loadrunner- winsock 函数 一览表:

       lrs_accept_connection 接受侦听套接字连接

lrs_close_socket 关闭打开的套接字
        lrs_create_socket 初始化套接字
        lrs_disable_socket 禁用套接字操作
        lrs_exclude_socket 重播期间排除套接字
        lrs_get_socket_attrib 获取套接字属性
        lrs_get_socket_handler 获取指定套接字的套接字处理程序
        lrs_length_receive 接收来自指定长度的缓冲区的数据
        lrs_receive 接收来自套接字的数据
        lrs_receive_ex 接收来自数据报或流套接字的数据(具有特定长度)
        lrs_send 将数据发送到数据报上或流套接字中
        lrs_set_receive_option 设置套接字接收选项
        lrs_set_socket_handler 设置特定套接字的套接字处理程序
        lrs_set_socket_options 设置套接字选项

缓冲区函数

lrs_free_buffer 释放分配给缓冲区的内存
        lrs_get_buffer_by_name 从数据文件中获取缓冲区及其大小
        lrs_get_last_received_buffer 获取套接字上接收到的最后的缓冲区及其大小
        lrs_get_last_received_buffer_size 获取套接字上接收到的最后一个缓冲区的大小
        lrs_get_received_buffer 获取最后接收到的缓冲区或其一部分
        lrs_get_static_buffer 获取静态缓冲区或其一部分
        lrs_get_user_buffer 获取套接字的用户数据的内容
        lrs_get_user_buffer_size 获取套接字的用户数据的大小
        lrs_set_send_buffer 指定要在套接字上发送的缓冲区

环境函数

lrs_cleanup 终止Windows套接字 DLL 的使用
        lrs_startup 初始化 Windows 套接字 DLL

关联语句函数

lrs_save_param 将静态或接收到的缓冲区(或缓冲区部分)保存到参数中
        lrs_save_param_ex 将用户、静态或接收到的缓冲区(或缓冲区部分)保存到参数中
        lrs_save_searched_string 在静态或接收到的缓冲区中搜索出现的字符串,将出现字符串的缓冲区部分保存到参数中

转换函数

lrs_ascii_to_ebcdic 将缓冲区数据从 ASCII 格式转换成 EBCDIC 格式
        lrs_decimal_to_hex_string 将十进制整数转换为十六进制字符串
        lrs_ebcdic_to_ascii 将缓冲区数据从 EBCDIC 格式转换成ASCII 格式
        lrs_hex_string_to_int 将十六进制字符串转换为整数

超时函数

lrs_set_accept_timeout 为接受套接字设置超时
        lrs_set_connect_timeout 为连接到套接字设置超时
        lrs_set_recv_timeout 为接收套接字上的初始预期数据设置超时
        lrs_set_recv_timeout2 为建立连接后接收套接字上的预期数据设置超时
        lrs_set_send_timeout 为发送套接字数据设置超时

录制会话之后,通过 VuGen 的内置编辑器可以查看录制的代码。您可以在脚本中滚动,查看应用程序生成的函数,并检查传输的数据。在主窗口中查看脚本时,可以看到VuGen 录制活动的顺序。在典型的会话期间,将录制下列函数顺序:

lrs_startup 初始化 WinSock DLL
        lrs_create_socket 初始化套接字
        lrs_send 在数据报上或者向流套接字发送数据
        lrs_receive 接收来自数据报或流套接字的数据
        lrs_disable_socket 禁用套接字操作
        lrs_close_socket 关闭打开的套接字
        lrs_cleanup 终止 WinSock DLL 的使用

VuGen 在 Windows 上使用 Windows 套接字协议支持应用程序的录制和重播;而在UNIX 平台上仅支持重播。

--------------------------------------------------------------------------------------------------------------------

那如何用LoadRunner使用winsock协议测试性能呢?

如何来测试使用windows sockets协议的性能呢?可以使用loadrunner来测试。步骤如下
首先、我们需要获得传送的数据包的内容,可以通过抓包工具来获取(如sniffer)。也可以直接向开发人员索取。要理解数据包中每位数据的含义,如哪些是启始位,哪些是正文,哪些是校验,哪些是结束等。并统计数据包大小。
第二步、我们开始编写脚本,
1、我们初始化Windows Sockets DLL:lrs_startup(version)。
2、然后建立socket连接:lrs_create_socket。
3、然后再把数据放在一个buffer中传送到目标服务器:lrs_send,数据包内容放在data.ws中。这样,一个发送就完成了。
4、然后我们再来接受服务器端给我们的返回数据:lrs_receive。
5、别忘记来个lrs_close_socket来关闭socket,做事有始有终嘛。
简单吧,复杂的流程就是相互组合。最后不要忘记在一些关键点前后加上transaction,以方便得到关键点的性能。
第三步、我们开始执行,与其他协议一样,把得到的结果进行分析。

下面这段是zee写得关于手写winsock脚本。转载过来学习

winsock脚本来说,手写脚本不是首选。为了理解如何建立脚本和Buffers,你需要知道服务器发送出来的协议

的细节。
为了自动产生脚本,需要录制一个客户端的应用。
如果你对服务器使用的协议非常的了解,那么也许你可以建立一个Data.ws文件和连贯的actions。但是这个过程

一定是单调而乏味的。你要有一些winsock脚本方面的经验。
为了看一个winsock脚本的例子,先试着录制一个简单的WEB应用(比如一个访问某站点首页的动作)。它会生成一

个简单的winsock脚本和buffer内容的格式。
为了建立LoadRunner的winsock脚本,录制一个客户端应用更可取。这样可以让LoadRunner从windows socket通

信中看到客户端和服务器的底层通信。LoadRunner使用wsock32.dll库录制socket通信,这个库包括windows

socket的API。
为了手写LoadRunner的winsock脚本,需要非常熟悉使用的协议。录制一个简单的浏览器的操作可以看到低于HTT

P协议通信的脚本。

下面是一个简单的例子:

以前的例子中未能接触到socket协议,但这也是一个较为多用的协议,也是必须要学习掌握的。

  此次例子采用本地及时通讯软件飞秋来做学习。

  通过我下面录制的脚本来说明:

/*********************************************************************
* Created by Mercury InteractiveWindowsSockets Recorder
*
* Created on: Tue Jul 07 10:44:31
*********************************************************************/

#include "lrs.h"

Action()
{
    int i;
    char *ActualBuffer;//定义字符指针
    int NumberOfBytes;//定义int型变量保存长度

//这是第一步initializes a socket
    lrs_create_socket("socket1", "UDP", "LocalHost=2425", LrsLastArg);
//我这里是让脚本连续运行多次
    for(i=0;i<8;i++)
    {
        lr_start_transaction("send");
  
        lr_think_time(7);
       //这里是第二步,通过建立的socket1将buf1中的数据发送给远端MM-7QL3Z0JYUJN6用户,端口2425
        lrs_send("socket1", "buf1", "TargetSocket=MM-7QL3Z0JYUJN6:2425", LrsLastArg);
      
        //取得缓冲区数据
        lrs_get_buffer_by_name("buf1", &ActualBuffer, &NumberOfBytes);
        //输出缓冲区数据大小
        lr_output_message("The buffer's size is: %d/n", NumberOfBytes);
       //从buf2中接收返回的数据
        lrs_receive("socket1", "buf2", LrsLastArg);

//取得缓冲区数据
        lrs_get_buffer_by_name("buf2", &ActualBuffer, &NumberOfBytes);
        //输出缓冲区数据大小
        lr_output_message("The buffer's size is: %d/n", NumberOfBytes);

lr_end_transaction("send", LR_AUTO);

}
    //第三步关闭释放socket连接
    lrs_close_socket("socket1");

return 0;
}

  下面我们来看buf中发送的数据,数据都会保存在data.ws文件中:

  发送的明文内容:lihongtao,但是可以看出,这里显示的都是密文,应该是按格式转换了编码。

;WSRData 2 1

send buf1 371
    "1_lbt4_0#128#0016D3B50AA3#0#0#0:1246963533:Administrator:LND7DEMO:4194592:"
    "20002:21b56c1d54100180afb94c84050a7f371f1010472b26092920ea2629699a74b2cbfe"
    "242eb74b16e66e6fe90c4610ccb110ce400851e68e16c51470a91120dfcdf324444e647444"
    "864e823810539413ed0b6b29a8ed46d2f95839047dbe4555b141afb80f5cf9c06e8af0aa90"
    "afe852dbfedab05ee91932a95f6faef8207907fb:5f4c457c52738bfdfaf28c9303d292c6"
    "\x00\x00"

recv buf2 87
    "1_lbt4_0#131#001109AB80C9#0#0#0:1246475216:Administrator:MM-7QL3Z0JYUJN6:3"
    "3:1246963533"
    "\x00"

-1

遇到点问题,搜索到这里。看了博主的脚本实在忍不住要吐槽几句。1.创建socket应该放在init里面关闭socket放在end里面,你都放在action里闹哪样啊。2.你想迭代设置一下就行了,干嘛要写for循环。

LoadRunner中winsocket协议学习的更多相关文章

  1. Loadrunner 中socket协议RecvBuffer接收到数据长度为空

    socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...

  2. Loadrunner中socket协议中的三个关联函数

    这3个函数其实都可以动态获取运行中收到的数据包中的数据,只要跟在要获取的收取数据包脚本后面即可.其中:lrs_save_searched_string和lrs_save_param如果buf_desc ...

  3. loadrunner测试TCP协议服务器性能

    loadrunner测试TCP协议服务器性能 . 性能loadrunner测试c 最近对服务器的性能感兴趣,于是开始研究了一阵子loadrunner如何做采用TCP协议交互的服务器的性能测试,对loa ...

  4. 在loadrunner中使用winsocket协议编写脚步三部曲

    这两天写了一个winsocket的脚本,没有通过录制的方式,是直接手写的.下面贴出来和大家分享: 脚本的写法很简单,大体说来,就像把大象放进冰箱一样,总共分三步: 第一步:把冰箱门打开. //建立到服 ...

  5. 性能测试学习 第七课 --loadrunner中JavaVuser脚本的编写

    1.环境准备:      LoadRunner11----->对应JDK1.6版本(32位) LoadRunner12----->对应JDK1.7版本(32位) (一).JDK下载安装完成 ...

  6. LoadRunner中的IP欺骗的设置以及误区

    LoadRunner中的IP欺骗的设置以及误区 最近在忙着部署web性能测试的环境后,对IP欺骗进行设置,特地做个笔记,给自己的学习历程留下点足迹. 一. 什么是IP欺骗? 做什么事首先要问个为什么, ...

  7. loadrunner支持https协议的操作方法-经验总结

    问题:用户portal支持https协议,用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下: login() { lr_think_time(10); web_url(& ...

  8. PHP中的Libevent学习

    wangbin@2012,1,3 目录 Libevent在php中的应用学习 1.      Libevent介绍 2.      为什么要学习libevent 3.      Php libeven ...

  9. http协议学习系列

    深入理解HTTP协议(转)  http://www.blogjava.net/zjusuyong/articles/304788.html http协议学习系列   1. 基础概念篇 1.1 介绍 H ...

随机推荐

  1. 【转发】未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。

     http://www.cnblogs.com/joey0210/archive/2012/09/29/2708420.html   上一篇文章说到了DLL引用问题,主要是说的程序中如果使用过了反射, ...

  2. 【Oracle】Oracle常用语句集合

    表相关 1.快速统计大表记录数 select table_name, t.num_rows, t.last_analyzed  from tabs t WHERE table_name='TABLE_ ...

  3. jsp标签(jsp动作元素)

    <jsp:forward page=”/index.jsp”></jsp:forward>也是跳转. 可以用来配置为首页,来启动某个servlet. <jsp:inclu ...

  4. 微信小程序—智能小蜜(基于智能语义解析olami开放平台)

    概述 该程序支持功能有查天气.查诗词.查百科.算算术.查日历.看笑话.看故事.聊天等,通过用户输入语句智能解析用户意图输出相应答案. 详细 代码下载:http://www.demodashi.com/ ...

  5. XMPP协议实现即时通讯底层书写 (二)-- IOS XMPPFramework Demo+分析

    我希望,This is a new day! 在看代码之前,我认为你还是应该先整理一下心情,来听我说几句: 首先,我希望你是在早上边看这篇blog,然后一边開始动手操作,假设你仅仅是看blog而不去自 ...

  6. Docker实战(五)编写Dockerfile

    一.创建Dockerfile文件 首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件: 二.Dockerfile 基本框架 Dockerf ...

  7. IntelliJ IDEA类头注释和方法注释

    The template is editable. Along with static text, code and comments, you can also use predefined var ...

  8. 峰值因子,峰均比,Reference Level

    峰值因子(CREST Factor,CF)与 峰均比( Peak-to-Average Ratio,PAR) 对于一个波形信号,在一段时间内信号幅度峰值比上信号幅度的有效值即为信号的峰值因子,它表征了 ...

  9. int main() 与 int _tmain()

    用过C的人都知道每一个C的程序都会有一个main(),但有时看别人写的程序发现主函数不是int main(),而是int _tmain(),而且头文件也不是<iostream.h>而是&l ...

  10. UIApplication深入学习

    多时候,我们不需要关心这个类,我们很少继承这个类,偶尔会调用这个类的api来实现一些功能,但是不可否认,这个类是iOS编程中很重要的一个概念.UIApplication的核心作用是提供了iOS程序运行 ...