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

WinSocket脚本编写实例与详解

时间:2016-07-15 13:16:25      阅读:710      评论:0      收藏:0      [点我收藏+]

标签:

我们知道Winsocket脚本与Web(HTML)脚本不一样,WEB(HTML)脚本主要采用HTML协议进行模拟,根据开发人员提供的接口编写脚本,而Winsocket协议主要根据服务器与客户端采用的内部通讯协议(内部通讯协议,我们在这里讲的是自定义的通讯协议)编写脚本,所以我们需要用到的工具有网络抓包工具Wireshark以及了解内部通讯协议的内容与作用,我们还可以通过服务器与客户端通讯的日志查看(linux下我们可以通过tail -f /var/log/tomcat...查看日志)。好了,我们开始行动吧!

第一步当然是新建winsocket协议:

技术分享

在编写脚本之前我要补充几个知识点:

1、网络字节序和主机字节序http://blog.csdn.net/houwei544/article/details/8592996

转换方式:

技术分享

2、8个字节的16进制(以x头):消息类型4个字节+消息体内容长度4个字节,进制类型一般由开发人员定义

3、C语言中的转义字符“\”用来输入特殊字符,如\“

第二步编写脚本,参考文献http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/loadrunner/2013/0106/205871.html

四部曲:

首先我们要创建socket,如lrs_create_socket("socket1", "TCP", "LocalHost=172.16.0.2:1202","RemoteHost=172.16.255.254:6002",LrsLastArg);

然后我们可以发送数据和接受数据,如 lrs_send("socket1", "buf1001", LrsLastArg); lrs_receive("socket1", "buf2001", LrsLastArg);

其次我们根据抓包的数据或者服务器与客户端通讯日志(可由开发人员提供内部通讯协议说明书)编写data数据文件:

;WSRData 2 1


 send buf1001 79
"\xe9\x03\x00\x00\x47\x00\x00\x00"//8个字节的16进制:消息类型1001+消息体内容长度71个字节
"B0-51-8E-08-74-93;172.16.0.2;empty;0;0;A5F5BE704C7447E68E7F8D5F810C0C31"//消息体内容,长度为71个字节
 recv buf2001 17
"\xd1\x07\x00\x00\x09\x00\x00\x00"
"SUCCESS;1"

-1

抓包结果:

技术分享

 我们知道十进制1001协议类型转换为16进制等于3e9,消息体内容长度为71转换为16进制等于47

然后我们把3e9转换为网络字节序是e9030000,把47转换为网络字节序是47000000(补0),所以通过抓包可以看到上面的结果。

 服务器与客户端通讯日志:

技术分享

 

最后我们关闭socket,如lrs_close_socket("socket1");

WinSocket脚本编写实例与详解

标签:

原文地址:http://www.cnblogs.com/szmcn/p/5672995.html

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