windfly1314 发表于 2009-5-13 15:57:29

求助C/S结构脚本返回值动态关联

今天尝试录制了一个PB开发的HIS系统.脚本回放的时候发现登录的时候就报错,发现问题所在是服务器返回值不一样.如下:
vuser_init()
{
    lrs_startup(257);

    lrs_create_socket("socket0", "TCP", "RemoteHost=1C184D5AED4F4AA:1521",LrsLastArg);

    lrs_send("socket0", "buf0", LrsLastArg);

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

    lrs_disable_socket("socket0", DISABLE_SEND);

    lrs_close_socket("socket0");

    lrs_create_socket("socket1", "TCP", "RemoteHost=1C184D5AED4F4AA:2479",LrsLastArg);

    lrs_send("socket1", "buf2", LrsLastArg);

    lrs_receive("socket1", "buf3", LrsLastArg);

    lrs_send("socket1", "buf4", LrsLastArg);

    lrs_receive("socket1", "buf5", LrsLastArg);

    lrs_send("socket1", "buf6", LrsLastArg);

    lrs_receive("socket1", "buf7", LrsLastArg);

    lrs_send("socket1", "buf8", LrsLastArg);
    ...

data.was如下:
sendbuf0 237
        "\x00\xed\x00\x00\x01\x00\x00\x00\x01"
        "9"
        "\x01"
        ","
        "\x00\x00"
        "\b"
        "\x00\x7f\xff\xc6\x0e\x00\x00\x01\x00\x00\xb3\x00"
        ":"
        "\x00\x00\x02\x00"
        "aa"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00"
        "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=202.38.207.171)(PORT=1521))(CONN"
        "ECT_DATA=(SERVICE_NAME=his)(CID=(PROGRAM=E:\\HIS\\scuthis.exe)(HOST=MICROS"
        "OF-F0AB74)(USER=Administrator))))"

recvbuf1 66
        "\x00"
        "B"
        "\x00\x00\x05\x00\x00\x00\x00"
        "8(ADDRESS=(PROTOCOL=tcp)(HOST=202.38.207.171)(PORT=2479))"

sendbuf2 237
        "\x00\xed\x00\x00\x01\x04\x00\x00\x01"
        "9"
        "\x01"
        ","
        "\x00\x00"
        "\b"
        "\x00\x7f\xff\xc6\x0e\x00\x00\x01\x00\x00\xb3\x00"
        ":"
        "\x00\x00\x02\x00"
        "aa"
        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
        "\x00\x00\x00\x00\x00"
        "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=202.38.207.171)(PORT=1521))(CONN"
        "ECT_DATA=(SERVICE_NAME=his)(CID=(PROGRAM=E:\\HIS\\scuthis.exe)(HOST=MICROS"
        "OF-F0AB74)(USER=Administrator))))"
         ...

问题所在应该是这个放回值recvbuf1 66
        "\x00"
        "B"
        "\x00\x00\x05\x00\x00\x00\x00"
        "8(ADDRESS=(PROTOCOL=tcp)(HOST=202.38.207.171)(PORT=2479))"

的PORT=2479是动态的?
那位大虾知道C/S结构的动态关联如何处理?

windfly1314 发表于 2009-5-14 10:20:19

??????

泊涯 发表于 2009-5-14 11:48:34

strstr 函数就是了

真不易 发表于 2009-5-14 11:48:45

不懂,但是帮你顶!

windfly1314 发表于 2009-5-25 12:16:26

回复 3# 的帖子

具体怎么样操作能解释一下吗?我只会B/S结构的函数关联。好像这个关联不了。

windfly1314 发表于 2009-5-31 17:42:07

再顶一下,各位~~~

云层 发表于 2009-5-31 19:09:16

lrs_save_param()好像是这个函数

windfly1314 发表于 2009-6-2 15:55:49

经过学习,可以通过手动关联找到了前面所说的动态端口值,但是现在尝试在
        lrs_create_socket("socket1", "TCP", "LocalHost=0", "RemoteHost=1C184D5AED4F4AA:2479", LrsLastArg);
如何把2479转化成动态值?
我是通过这样来获取到了这个动态值:
        lrs_send("socket0", "buf0", LrsLastArg);

        lrs_receive("socket0", "buf1", LrsLastArg);
        lrs_save_searched_string("socket0", LRS_LAST_RECEIVED, "port", "LB/BIN=(PORT=", "RB/BIN=)", 1, 0, -1);
                     lr_output_message("这里打印出动态端口号!你不就是:%s嘛!",lr_eval_string("{port}"));

[ 本帖最后由 windfly1314 于 2009-6-2 15:56 编辑 ]

windfly1314 发表于 2009-6-2 16:26:59

我搜索到很多朋友说把端口号用函数参数化就行了,我也知道关键在于 lrs_create_socket("socket1", "TCP", "LocalHost=0", "RemoteHost=1C184D5AED4F4AA:2479", LrsLastArg);
把2479参数化,但参数化值怎样把它直接调用动态值呢?

windfly1314 发表于 2009-6-4 10:12:06

搜索到论坛中已有解决:
http://bbs.51testing.com/thread-124084-1-1.html
页: [1]
查看完整版本: 求助C/S结构脚本返回值动态关联