51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8525|回复: 9
打印 上一主题 下一主题

[原创] Unable to translate buffer to socket2. Error code : 9013.的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-11-20 22:57:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题是这样的:
    我在向服务器发送的报文是加密后的密文,内容如:“151111?u?9翈艪u 菡穏鮅h矾ゥ?堪}2|4”,正如看到的,密文中有一些字符被解析为双字节字符,这样在读取的时候遇到双字节字符处就会报错(字符转换错误):

    脚本为WinSock协议,基本实现如下:
    char *SendBuf = "151112457789990909461794619847817412345";
    cbEncryp(SendBuf,39,b_k); //调用加密函数进行加密
    //以上报文加密结果:151111?u?9翈艪u 菡穏鮅h矾ゥ?堪}2|4
    lrs_set_send_buffer("socket0",SendBuf,39);
    lrs_send("socket0","buf2",LrsLastArg);
   
    以上脚本执行到lrs_send处便会报出错误:
    Unable to translate buffer to socket2. Error code : 9013.
    如果对加密后的报文用如下两种方式打印:
    for(i=0;i<39;i++)
       lr_output_message("要发送的报文:%c",SendBuf);//打印字符,对应结果1
    for(i=0;i<39;i++)
       lr_output_message("要发送的报文:%d",SendBuf);//打印数值,对应结果2
    结果1:(前20个)                    结果2:(前20个)  
    Action.c(80): 要发送的报文:     Action.c(80): 要发送的报文: 2
    Action.c(80): 要发送的报文:      Action.c(80): 要发送的报文: 0
    Action.c(80): 要发送的报文:      Action.c(80): 要发送的报文: 0
    Action.c(80): 要发送的报文:      Action.c(80): 要发送的报文: 0
    Action.c(80): 要发送的报文: '    Action.c(80): 要发送的报文: 39
    Action.c(80): 要发送的报文: 1    Action.c(80): 要发送的报文: 49
    Action.c(80): 要发送的报文: 5    Action.c(80): 要发送的报文: 53
    Action.c(80): 要发送的报文: 1    Action.c(80): 要发送的报文: 49
    Action.c(80): 要发送的报文: 1    Action.c(80): 要发送的报文: 49
    Action.c(80): 要发送的报文: 1    Action.c(80): 要发送的报文: 49
    Action.c(80): 要发送的报文: 1    Action.c(80): 要发送的报文: 49
    Action.c(80): 要发送的报文: ?    Action.c(80): 要发送的报文: -120
    Action.c(80): 要发送的报文:     Action.c(80): 要发送的报文: 22
    Action.c(80): 要发送的报文: u    Action.c(80): 要发送的报文: 117
    Action.c(80): 要发送的报文: ?    Action.c(80): 要发送的报文: -31
    Action.c(80): 要发送的报文:     Action.c(80): 要发送的报文: 11
    Action.c(80): 要发送的报文: 9    Action.c(80): 要发送的报文: 57
    Action.c(80): 要发送的报文: ?    Action.c(80): 要发送的报文: -63
    Action.c(80): 要发送的报文: ?    Action.c(80): 要发送的报文: -114
    Action.c(80): 要发送的报文: ?    Action.c(80): 要发送的报文: -58
    Action.c(80): 要发送的报文: @    Action.c(80): 要发送的报文: 64

    如果将对应为负值的字符单个发送也会报出上述错误。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-11-21 11:59:24 | 只看该作者
用lrs_length_send()
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-11-21 22:59:26 | 只看该作者
非常感谢leey!问题解决!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-3-27 13:04:15 | 只看该作者
您好,有个问题想想您请教一下
就是如何使用lrs_length_send()
这个函数呢,我现在遇到的问题和你说的很像
再进行转码后有部分参数可以使用
大部分的却无法使用了

这是我的邮箱号yi_321@126.com
希望您能给一个解答
万分感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-11-20 18:42:08 | 只看该作者
UDP的怎么办呢?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-12-4 15:58:52 | 只看该作者
leey很强大
刚才也碰到这个问题,加length后解决了 :)
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-12-4 16:14:51 | 只看该作者
奇怪,你们加length就都能解决,我为什么就不能呢?9013其实就是操作缓冲区错误,除了用length,怕还要保存为参数才行,如果有/X00这样的东东,参数都还必须要用data中的才行!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2009-9-29 11:44:40 | 只看该作者

用lrs_length_send函数

系统会提示 Error : Specified buffer lrs_length_send : doesn't exist. Error code : 9011错误
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2009-9-29 11:54:49 | 只看该作者

如何使用,能否发到我的邮箱里

回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-11-15 00:25:13 | 只看该作者
如何解决怎么不提交出来让大家有的参考呢?同样遇到这个问题,是压缩后的数据进行发送,使用lrs_length_send 提示9011错误!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-10 12:24 , Processed in 0.095701 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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