码迷,mamicode.com
首页 > Windows程序 > 详细

有关WinSocekt 协议录制LR脚本

时间:2015-04-01 21:40:13      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

看到大家都说WinSocekt 协议属于底层协议,不太常用,可是因为工作原因,我接触到的项目都是WinSocekt 协议协议,还有一些直接用Socket协议编写的程序,因此在Socekt协议这里花费了大量的时间。

先说说WinSocekt 协议

 

选择此协议录制的脚本除vuser_ini、Action、 vuser_end三大部分之外还有一个存放所收发数据包的data.ws文件,在data.ws文件中按照如下格式存放数据:

 

send buf0 50 

 

//send 表示准备发生的数据包  recv 表示预期接收的数据包

 

//buf0表示所要发送的数据名称

//50表示所要发送数据的长度

 "\x00"

 "2"

 "\x00\xbe\x00\x01\x03"

 "#"

 "\xbe\x00\x00\x00\x01\x00\x00\x00\x1e\x00"

 "4"

 "\x00\x01\x00"

 "オ"

 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00"

 "\x00\x00\x00\x00\x00\x00\x00"

在WinSocekt 协议中参数化方法:

 

在data.ws文件中,按照常规的方法,选择需要参数化的数据右点选择参数化即可

 

在WinSocekt 协议中做关联方法,下面的链接可以看到详细描述,这里就不多说了。

http://www.51testing.com/?17369/action_viewspace_itemid_14091.html

 

前一段时间还碰到一个使用Socekt协议的项目,因为无法使用LR直接录制所以自己写了一个WinSocekt 协议脚本,因为第一次写脚本所以走了很多的弯路,o(∩_∩)o...不过这本身也是一个学习的过程,先说说基本的做法吧(在LR中有关socekt的函数都是lrs开头的)

 

int lrs_create_socket(   char *s_desc,         char    *type,   [                    char*  LocalHost,]  [char*     peer,]      [char*backlog,] LrsLastArg );

 

参数说明:

 

S_desc:要初始化的套接字标识符,如socket0。

 

type: 套接字类型,有TCP和UDP两种。

 

LocalHost:   绑定套接字的本地地址、端口,如LocalHost=4002,也可以在端口前面加上

 

本机名称或IP地址,如LocalHost=overn:4002,或LocalHost=168.3.4.127:4002。可选。

 

peer:处理套接字请求的远程机端口,如RemoteHost=168.3.1.230:6666。可选。

 

backlog: 请求连接队列的最大长度,如backlog=20,可选。

LrsLastArg:参数结束标志

返回值:

初始化成功返回    0;如果是   VuG  错误则返回   VuG  错误码,如果是套接字错误则返回Windwos套接字错误码

用法:

 

lrs_create_socket("socket0", "UDP", "LocalHost=4002",  LrsLastArg);

 

lrs_create_socket("socket0", "TCP", "RemoteHost=168.3.1.230:6666", LrsLastArg);

函数说明:

lrs_create_socket函数用来初始化一个套接字。该函数通过执行socket命令来打开一个

新的套接字连接。如果提供LocalHost参数它将执行bind命令来绑定该套接字;如果指定peer

参数它将执行connect命令和远端主机建立一个连接;如果提供backlog参数将会执行listen

 

命令来侦听该套接字。Backlog对队列中等待服务的请求的数目进行了限制,大多数系统缺

省值为20。如果一个服务请求到来时,请求队列已满,该socket将拒绝连接请求,客户端

将会收到一个出错信息

指定LocalHost时可以在端口前加上主机名(如"LocalHost=overn:80"),如果主机的IP地

 

址是绑定的也可以指定为它的IP地址,如"LocalHost=168.3.4.127:6666"。

该函数在客户端或服务器端的Windows      Socket会话期间都会被自动记录,如果是客户

端会话则peer和port两个参数会被记录,如果是服务器端则会记录port和backlog。

 

上面是create函数的详细描述,由此可用知道如果作为客户端的程序只需要指定一个远程主机的IP地址、端口即可:

 

lrs_create_socket("socket0", "TCP", "LocalHost=0", "RemoteHost=192.168.4.98:8690", LrsLastArg)

作为服务端需要多一个backlog参数,比且需要一个lrs_accept_connection接受侦听套接字。且需要创建一个用来发送数据的socket1,

 

lrs_create_socket("socket0", "TCP", "LocalHost=8690", "Backlog=1", LrsLastArg);

lrs_accept_connection("socket0", "socket1");

创建好套接字后就可用按照需要的顺序收发数据了,如果是自己写的话还需要根据程序协议的需要在data.ws文件中按照格式添加buf数据包。

 

到最后用完socket的时候不要忘记关闭套接字,通常初始化套接字在vuser_ini中使用lrs_startup函数,该函数指定应用程序可用的windows套接字的最高版本。

终止套接字在vuser_end中调用lrs_cleanup函数。

目前就了解这样一个顺序,还有许多有疑惑的地方,希望大家可以多多指教,共同学习。

 

有关WinSocekt 协议录制LR脚本

标签:

原文地址:http://www.cnblogs.com/shengs/p/4385376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!