51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1989|回复: 4
打印 上一主题 下一主题

[求助] LR的WINSOCKET函数中爆变态的问题,有谁知道是什么回事?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-11 17:35:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很怪很怪的问题,不知道哪位朋友知道,帮忙解决,谢谢。
脚本:================================
    lrs_receive("socket1", "buf15", LrsLastArg);

        ///lr_think_time(10);

        lrs_get_buffer_by_name("buf15", &Buffer, &Size);

        lr_output_message("______________Size1 = \"%d\"\n , Buffer1 = \"%s\"\n. ",Size,Buffer);

        lr_output_message("______________Sizeof1 = \"%d\"\n . ",strlen(Buffer));

        lrs_get_buffer_by_name("buf15", &Buffer, &Size);

        lr_output_message("______________Size2 = \"%d\"\n , Buffer2 = \"%s\"\n. ",Size,Buffer);

        lr_output_message("______________Sizeof2 = \"%d\"\n . ",strlen(Buffer));


日志:==========================================
Action.c(108): lrs_get_buffer_by_name (buf15, buf_p, size_p)
Action.c(110): ______________Size1 = "9"
, Buffer1 = "tester567nama"
.
Action.c(112): ______________Sizeof1 = "13"
.
Action.c(114): lrs_get_buffer_by_name (buf15, buf_p, size_p)
Action.c(116): ______________Size2 = "9"
, Buffer2 = "tester567"
.
Action.c(118): ______________Sizeof2 = "9"


问题:=====================================
第一次lrs_get_buffer_by_name,其中的buffer值为“tester567nama”,但是第二次lrs_get_buffer_by_name,取的是同样的缓冲区数据,buffer值却为“tester567”,而这次的值才是正确的,为什么第一次去取总会取错呢?更郁闷的是两次的SIZE都为9,但是头一次的BUFFER值为什么总不对?

怎么弄撒,好变态的问题```第一次和第二次取的值不一样,更恶心的是第一次的值为tester567nama,但SIZE显示却只有9,明显不是9,通过strlen显示为13,事实上也是13。
这函数是不是有毛病的``第二次GET出来的值是正确的。为什么第一次有错误呢?

而通过下面的方式去获取,就正确了,不管第一次还是第几次

        Size = lrs_get_last_received_buffer_size("socket1");

        Buffer = lrs_get_received_buffer("socket1", 0, Size, NULL);

        lr_output_message("_____________Size = \"%d\"\n  buf15 = \"%s\"\n. ",Size,Buffer);

为什么lrs_get_buffer_by_name第一次取就有问题呢?而第一次显示的SIZE和实际打印出来的对不上呢?而第二次lrs_get_buffer_by_name才会正确
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-8-11 17:47:20 | 只看该作者

更变态的又来了。

lrs_receive("socket1", "buf15", LrsLastArg);
lr_think_time(10);//加上思考时间后,得出来的Buffer1 = "tester567偏"
Action.c(116): ______________Size1 = "9"
, Buffer1 = "tester567偏"
Action.c(118): ______________Sizeof1 = "11"
-----------------------------------------------------------------------------------------
然后再去掉思考时间,又得出来Buffer1 = "tester567nam|"
Action.c(116): ______________Size1 = "9"
, Buffer1 = "tester567nam|"

真郁闷撒,这函数取缓冲区数据因为时间和操作的问题,是不是会取错的
.
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-8-12 09:53:58 | 只看该作者
有谁知道么?或则遇到过?不会没人用过吧?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-8-12 14:00:06 | 只看该作者
顶到解决为止```
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-8-15 17:35:08 | 只看该作者

现在多了一个问题

lrs_set_send_buffer文档中说明只对其后的lrs_send有影响
但是实际上来看虽然LR自己抓BUFFER里的数据是显示没影响的,但发送出去的数据包依然还是lrs_set_send_buffer的数据。
影响范围扩大到了之后所有的lrs_send,有什么办法解决么?
通过采用lrs_free_buffer或则C库中的free函数来释放内存,都没用,因为虽然BUFFER为空,但仍然被作用到,依旧发送空消息。
有什么办法使lrs_set_send_buffer的数据只在其后的lrs_send发送,其他lrs_send要发送的缓冲区数据不会受到影响呢?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-23 20:11 , Processed in 0.066947 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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