51Testing软件测试论坛
标题:
LR socket脚本运行时接受不到服务器返回的数据 recvlen=0 应该怎么处理
[打印本页]
作者:
18220809003
时间:
2018-6-22 17:25
标题:
LR socket脚本运行时接受不到服务器返回的数据 recvlen=0 应该怎么处理
运行的socket脚本如下:
#include "lrs.h"
Action()
{
char *recvbuf;
int recvlen=0;
int rc;
lrs_startup(257);
lr_start_transaction("Trans_1");
lr_start_transaction("Conn_1");
rc=lrs_create_socket("socket0", "TCP", "RemoteHost=47.92.48.98:9092", LrsLastArg);//创建Socket连接;RemoteHost处填入被测程序所在服务器IP
lr_output_message("rc=%d",rc);
if (rc != 0 ) {
lr_end_transaction("Conn_1", LR_FAIL);
lr_end_transaction ("Trans_1", LR_FAIL);
return 0;
}
lr_end_transaction("Conn_1", LR_PASS); //判断socket是否链接成功的事务,0表示创建成功
lrs_send("socket0", "buf0", LrsLastArg); //发送buf0,buf0为在data.ws中定义的发送变量
lrs_receive("socket0", "buf1", LrsLastArg); //接收消息,存放在buf1中,buf1是在data.ws中定义的接收数组,注意数组长度一定要大于等于实际接收长度
lrs_get_last_received_buffer("socket0",&recvbuf,&recvlen);//把Socket最后接收的字节数组,长度放在recvlen中,内容放在recvbuf中
lr_output_message("Received:%s",lr_eval_string(recvbuf));
lr_output_message("recvlenLenth:%d",recvlen);
if(recvlen>3)
lr_end_transaction("Trans_1", LR_PASS);
else
lr_end_transaction ("Trans_1", LR_FAIL);
lrs_disable_socket("socket0", DISABLE_SEND_RECV); //禁止发送请求
lrs_close_socket("socket0");
return 0;
}
运行结果:
Received:乱码
recvlen:0
事务 "Trans_1" 以 "Fail" 状态结束
求助大神帮忙解答!!万分感谢。
作者:
qqq911
时间:
2018-6-22 19:01
ActucalNumber=lrs_get_last_received_buffer_size("socket0");
//socket接收到buf动态包长,由于返回的数据包的包长动态变化,所以lrs_save_param_ex操作时需要获取ActualNumber
lrs_save_param_ex("socket0","received",NULL,0,ActucalNumber,"ascii","param1");
//获取返回数据的字符串
用这两个来获取返回的内容及长度
作者:
a305634841
时间:
2018-7-23 15:26
https://yuedu.baidu.com/ebook/53 ... 45c3b3567ec102ddca8
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2