51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2173|回复: 6
打印 上一主题 下一主题

[原创] 测winsocket如何参数化 谢谢

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-10-8 15:09:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
模拟终端机登录服务器,每个终端机都有一个编号,要对这个编号和buffer参数化
脚本如下:
/*********************************************************************
* Created by Mercury Interactive Windows Sockets Recorder
*
* Created on: Tue Oct 06 10:17:21
*********************************************************************/
#include "lrs.h"


vuser_init()
{
    lrs_startup(257);

    return 0;
}

#include "lrs.h"


Action()
{


  void mod_buffer(char* data, int psize)

    {
          unsigned char* ptr;
          lrs_get_buffer_by_name("buf0", &data, &psize);
      lrs_save_param_ex("socket0","static",data,0,psize,"null","ptr");
          data[19] = checksum(ptr, 19);               
   
    }

        unsigned char checksum(unsigned char* data, int size)

     {
           int i;
           unsigned char val = 0;
        
           for(i = 0; i < size; i++)
                  val += data;
        
           return val;
     }

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

    lrs_send("socket0", "buf0", "TargetSocket=192.168.1.11:8000", LrsLastArg);

    lrs_receive("socket0", "buf1", LrsLastArg);

    lrs_close_socket("socket0");

    return 0;
}
#include "lrs.h"


vuser_end()
{
    lrs_cleanup();

    return 0;
}

data.ws

;WSRData 2 1

send  buf0 20
        "\x00"
        "~"
        "\x00\x00\x00\x00\x84"
        "0512010010"              //终端机编号
        "\x00\x00\xec"            

recv  buf1 20
        "\x00"
        "~"
        "\x00\x00\x00\x00\x85"
        "0512010010"             //终端机编号  
        "\x00\x00\xed"            

-1

参数化后 这个代码是有问题的,哪位大侠能帮我改改,
0512010010是终端机编号,所有主机的编号是一样长的, 服务器要验证buf中的第二十位,通过才能让终端机登录,
buf由前19位累加而成,---"\x00"
        "~"
        "\x00\x00\x00\x00\x85"
        "0512010010"
        "\x00\x00\
我用这个函数unsigned char checksum(unsigned char* data, int size)来得到第二十位,是不是有问题?? 如何对这些做参数化
   还请哪位大侠多多指点
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

7#
发表于 2009-10-9 18:37:39 | 只看该作者
大概把你的问题看了一遍,由于在LR里面有16进制表示,也有符号表示,不知道你说是怎么加。。比如你data.wa中就有一个“~”符号,是怎么加法,还是都转成ASCII码来加。或者用16进制来加。。我用你的前19位加。怎么个算法都要进位了。也就是一个字符不能表示了。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-10-9 14:43:53 | 只看该作者
我写过类似的脚本,校验位是取发送内容一段字节的异或和~
建议楼主取得终端机编号,然后把发送数据写成一个数组,对整个数组做参数化~ 要验证的第二十位自定义函数做累加,然后用memcpy调用~ 验证的第二十位自定义函数方法最好依照服务器的写法,最方便的方法就是从开发人员那边把代码拷贝过来~~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-10-9 12:07:16 | 只看该作者
比对方法不适合吧,checksum函数是算出第二十个字节,这里还是先要读取buffer然后在做累加算出checksum,才能 通过服务器的验证,
  有知道的加我QQ 12719335
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-10-9 10:37:59 | 只看该作者
我觉得这个适用比对方法,CSDN找找,应该有合适比对方法
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-10-9 09:45:57 | 只看该作者
问题就是把终端编号参数化后 不能登陆服务器,服务器要验证BUF中的第二十位,第二十位由前十九位累加起来的
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2009-10-8 18:13:37 | 只看该作者
哥们,既然说问题,不妨把问题症状给出来看看。

另外,你的send 和 recv 中都有16进制码,这些大概有关联?!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-10-1 19:36 , Processed in 0.096004 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表