LR的WINSOCKET函数中爆变态的问题,有谁知道是什么回事?
:Q 很怪很怪的问题,不知道哪位朋友知道,帮忙解决,谢谢。脚本:================================
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\"\nbuf15 = \"%s\"\n. ",Size,Buffer);
为什么lrs_get_buffer_by_name第一次取就有问题呢?而第一次显示的SIZE和实际打印出来的对不上呢?而第二次lrs_get_buffer_by_name才会正确
更变态的又来了。
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|"
真郁闷撒,这函数取缓冲区数据因为时间和操作的问题,是不是会取错的
. 有谁知道么?或则遇到过?不会没人用过吧? 顶到解决为止```
现在多了一个问题
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]