标签:
看到大家都说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函数。
目前就了解这样一个顺序,还有许多有疑惑的地方,希望大家可以多多指教,共同学习。
标签:
原文地址:http://www.cnblogs.com/shengs/p/4385376.html