51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

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

[求助] 关于socket UDP 9013错误问题求助!急!(已解决)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-1-6 16:30:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ww32245420 于 2014-1-6 17:30 编辑

本人想将socket中的buf在脚本中参数化,无奈遇到很多问题,求好心网友指导下!
代码如下:


#include "lrs.h"

Action()
{
    // 初始化变量
        char data[]={0x30,0x00,0x00,0x00,0x31,0x30,0xA8};

    // 创建socket连接
        lrs_create_socket("socket0","UDP","LocalHost=0","RemoteHost=192.168.1.103:10888",LrsLastArg);
        // 设定要发送数据的缓冲区
        lrs_set_send_buffer("socket0",data,sizeof(data));

        // 调用发送函数
    lrs_send("socket0","buf0",LrsLastArg);

        // 接收返回数据
    //lrs_receive("socket0","buf1",LrsLastArg);

    // 打印接收到得数据
    //lr_output_message("返回的数据:%s","buf1");
        // 释放缓冲区
    lrs_free_buffer("buf0");

    // 关闭socket连接
    lrs_close_socket("socket0");

}

data.ws文件内容如下:
;WSRData 2 1

send buf0


-1


报错:Error : Unable to translate buffer to socket0. Error code : 9013.

我个人先分析了下,万般无奈求助网友:
1、必须UDP发包,所以网上网友说的lrs_length_send函数不适用,不可取;
2、若将data数组中的数据直接放在data.ws中,也不会报错,可正常发包;
3、分析了下数据,发现是最后一个0xA8,LR无法转换为其可识别的字符,但为啥我用data.ws这种方式可以呢,不报错呢?如果将0xA8改成 十进制值128以下的 都可以成功,超了则不行...


求各位大神大虾老师指导,谢谢!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2014-1-6 16:30:55 | 只看该作者
听朋友建议 改成以下的:
    // 初始化变量
        unsigned char data[]={0x30,0x00,0x00,0x00,0x31,0x30,0xA8};
        char *temp = (char *)data;

    // 创建socket连接
        lrs_create_socket("socket0","UDP","LocalHost=0","RemoteHost=192.168.1.103:10888",LrsLastArg);
        // 设定要发送数据的缓冲区
        lrs_set_send_buffer("socket0",temp,sizeof(data));


但还是不对....哎
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2014-1-6 17:32:33 | 只看该作者
纠结了一天,终于解决了....参数化方法不对,留个脚印给后人:
char data[] = {0x01,0x63,0x00,0x08,0x54,0x1C,0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x0D,0x0B,0x13,0x00,0x00,0x03,0x66,0xA8,0x00,0x02,0x00,0x01,0x53,0xD7,0xDD,0x71,0xA1,0xF6,0x8A,0xD5,0x10,0x02,0x8C,0x4C};

    // 创建socket连接
        lrs_create_socket("socket0","UDP","LocalHost=0","RemoteHost=192.168.1.103:10888",LrsLastArg);
    // 此处参数化,保存到size_param变量中
       lrs_save_param_ex("socket0", "user", data, 0, sizeof(data),"ascii", "size_param");


然后在
;WSRData 2 1

send buf0 "<size_param>"

-1
使用
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2015-11-27 19:04:33 | 只看该作者
感谢楼主,幸亏遇到你!造福后人,功在千秋!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2016-5-19 16:52:03 | 只看该作者
前人栽树,后人乘凉。感谢!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-13 09:11 , Processed in 0.072042 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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