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:4815.0.0005.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) 收藏 举报
浙公网安备 33010602011771号