首先让我们先看一下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. JAVA实现zip压缩需要注意的问题

    近来对院社二维码平台进行2.0升级改造.于昨日踩到一个巨坑.特此记录... 需求源于院社编辑在批量下载二维码的时候,系统后台需要对所要下载的二维码进行重命名和zip打包压缩. 系统测试的时候发现:首次 ...

  2. android下载

    1. 源码下载链接: http://source.android.com/source/downloading.html 参考链接: Android源码下载方法详解 2. SDK下载 http://d ...

  3. 列举一些常见的系统系能瓶颈 Common Bottlenecks

    http://www.nowamagic.net/librarys/veda/detail/2408在 Zen And The Art Of Scaling - A Koan And Epigram ...

  4. Android设计模式系列(2)--SDK源码之观察者模式

    观察者模式,是一种非常常见的设计模式,在很多系统中随处可见,尤其是涉及到数据状态发生变化需要通知的情况下.本文以AbstractCursor为例子,展开分析.观察者模式,Observer Patter ...

  5. 火狐浏览器(firefox)中js要注意的问题

    1.出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因. 添加   async  : false  , -> async. 默认是 true,即为异步方式,$.aja ...

  6. CentOS下安装和配置MySQL-JDK-Tomcat-Nginx(个人官网环境搭建手冊)

    今天,又一次弄我的个人云主机的环境.准备运营自己用Java写的个人官网等站点. 服务器环境:阿里云CentOS 6.4位 包含以下脚本在内的绝大部分命令和脚本,都是我亲自运行过,靠谱的. 完整的&qu ...

  7. Scala, Groovy, Clojure, Jython, JRuby and Java ----我们的工作语言

    在曾经的一封邮件中,我指出在众多改变中,最明显的一个就是:在java领地上的JVM上使用其它流行的语言的发展变得越来越快.一些老的和新的创建的基于JVM的语言---JRuby 和 Jython ,Ja ...

  8. AutoFac文档11(转载)

    目录 开始 Registering components 控制范围和生命周期 用模块结构化Autofac xml配置 与.net集成 深入理解Autofac 指导 关于 词汇表 元数据 Autofac ...

  9. 在ubuntu下安装free pascal

    1.ubuntu16.04版本已经集成了free pascal最新的3.0版,只需要安装就可以了. sudo apt install fp-compiler 在ubuntu里面,fp-compiler ...

  10. Atitit. 软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动、停止、重启

    Atitit.   软件GUI按钮与仪表盘--web服务器区--获取apache配置文件路径 linux and apache的启动.停止.重启 可以通过"netstat -anp" ...