51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2517|回复: 2
打印 上一主题 下一主题

[求助] LR socket脚本运行时接受不到服务器返回的数据 recvlen=0 应该怎么处理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-22 17:25:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
运行的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" 状态结束
求助大神帮忙解答!!万分感谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2018-9-1 14:58
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2018-7-23 15:26:24 | 只看该作者
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    前天 10:07
  • 签到天数: 1511 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2018-6-22 19:01:42 | 只看该作者
    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");   
        //获取返回数据的字符串


    用这两个来获取返回的内容及长度
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-10 17:11 , Processed in 0.067072 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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