gil's pkm2

winsock的timeout的设定

win socket录制的脚本中,有没有这样一种设置

lrs_receive的时候,能不能设置成只有接收到指定字符的时候才结束,否则一直等待到接收该字符或者超时。

提出此问题是因为我在进行压力测试的时候,发现当服务器压力变大时,它会将一个expected buffer中的数据分为两次或两次以上发送接收,导致业务出错,例如:

QUOTE:
vuser_init.c(31): lrs_send(socket1, buf4)        [MsgId: MMSG0]
vuser_init.c(33): lrs_receive(socket1, buf5)        [MsgId: MMSG0]
vuser_init.c(33): Mismatch (expected 522 bytes, 31 bytes actually received)        [MsgId: MMSG0]
================================EXPECTED BUFFER================================        [MsgId: MMSG0]
        "\n"
        "Terminal type set to EBS-GUI\n"
        "\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "&START&3"
        "\xfe"
        "20嗀WAITING APPLICATION&END&&START&99"
        "\xfe"
        "40"
        "\xfe"
        "10,"
        "\xfe"
        "22 OCT 2005 12:4815.0.0005.003&END&"
        [MsgId: MMSG0]
===============================================================================        [MsgId: MMSG0]
================================RECEIVED BUFFER================================        [MsgId: MMSG0]
        "\n"
        "Terminal type set to EBS-GUI\n"
        "\n"
        [MsgId: MMSG0]
===============================================================================        [MsgId: MMSG0]
vuser_init.c(33): callRecv:31 bytes were received        [MsgId: MMSG0]
vuser_init.c(36): lrs_send(socket1, buf6)        [MsgId: MMSG0]
vuser_init.c(36): Notify: Parameter Substitution: parameter "pSdUser" =  "USER45"        [MsgId: MMSG-13992]
vuser_init.c(38): lrs_receive(socket1, buf17)        [MsgId: MMSG0]
vuser_init.c(38): Mismatch (expected 159 bytes, 198 bytes actually received)        [MsgId: MMSG0]
================================EXPECTED BUFFER================================        [MsgId: MMSG0]
        "&START&30~67~*** YOUR MAINTENANCE FEES ARE OVERDUE (20051230) ***~~CONTINU"
        "E~~~20&END&&START&99~56~03 JAN 2006~USER.1~3,~10 JAN 2006 07:08~g15.0.00~r"
        "05.003&END&"
        [MsgId: MMSG0]
===============================================================================        [MsgId: MMSG0]
================================RECEIVED BUFFER================================        [MsgId: MMSG0]
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        "PTERM: No such file or directory\n"
        [MsgId: MMSG0]
===============================================================================        [MsgId: MMSG0]
在这个例子中,我是想以"05.003&END&"作为每个接收buffer的结束标志,并且我已经应用了这样一个函数:

QUOTE:
lrs_set_receive_option(EndMarker, BinaryStringTerminator, "05.003&END&", LrsLastArg);
但是似乎该函数并没有完全生效,只在发现“05.003&END&”时一定结束,而在没有发现该标志时也会结束。

请大家赐教;) 

 

经过800的帮助和自己的不懈试验,终于发现问题所在了,原来还是timeout的问题,不过还是要再试试看才能确认。 

posted on 2009-07-29 21:41  gil's pkm2  阅读(403)  评论(0)    收藏  举报

导航