winsocket协议回放mismatch问题

录制c/s软件,使用winsocket协议,回放的时候出现mismatch的错误,录制的时候是buf221接收到68078byte,回放的时候是 0byte,如果在send和receive之间加入一段时间的thinktime的时候,就可以完全接收到68078byte的内容。但是要测试响应时间的话不能加入thinktime,所以用了下面的方法,加入了while循环,次运行的时候发现有的时候能通过,有的时候会一直循环半个小时,不知道是什么原因,哪位高手能够帮我解决一下这个问题,如何能测试出这段脚本的响应时间。

int i=0;
lrs_send("socket1", "buf220", LrsLastArg);
while( i!=68087)
{  
  lrs_receive("socket1", "buf221", LrsLastArg);
  i=lrs_get_last_received_buffer_size ("socket1");
}


返回的数据是动态的,出现MISMATCH不奇怪,设置一下匹配时间的最大值就可以了!lrs_set_recv_timeout2().
    另外你这个代码有时通过是因为你接收的包大小刚好跟录制时的一样,即是68087,如果第一次接收的不是68087的话基本上死循环了,因为 lrs_receive函数是读缓冲的,读过的缓冲会清掉,就是说第一次读的缓冲其实已经读了,不过大小不一致而已,那么你继续循环读的话根本不可能再读到那个完整的包了(被第一次读时清掉了),于是一直在等.你可以尝试用下面的函数:
lrs_set_receive_option(EndMarker, EndMarker_None ) // 读取直到缓冲结束.
lrs_set_receive_option(EndMarker, StringTerminator , "/r/n") //读取直到"/r/n"符号出现 . 你可以根据自己的接收数据的结束符修改
lrs_set_receive_option(EndMarker, BinaryStringTerminator , "//X00") 读取直到二进制符号"//X00"出现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值