51Testing软件测试论坛

标题: Unable to translate buffer to socket2. Error code : 9013.的问题 [打印本页]

作者: overn    时间: 2007-11-20 22:57
标题: Unable to translate buffer to socket2. Error code : 9013.的问题
问题是这样的:
    我在向服务器发送的报文是加密后的密文,内容如:“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

    如果将对应为负值的字符单个发送也会报出上述错误。
作者: leey    时间: 2007-11-21 11:59
用lrs_length_send()
作者: overn    时间: 2007-11-21 22:59
非常感谢leey!问题解决!
作者: snowliutao    时间: 2008-3-27 13:04
您好,有个问题想想您请教一下
就是如何使用lrs_length_send()
这个函数呢,我现在遇到的问题和你说的很像
再进行转码后有部分参数可以使用
大部分的却无法使用了

这是我的邮箱号yi_321@126.com
希望您能给一个解答
万分感谢!
作者: zengyixun    时间: 2008-11-20 18:42
UDP的怎么办呢?
作者: testhehefly    时间: 2008-12-4 15:58
leey很强大
刚才也碰到这个问题,加length后解决了 :)
作者: zengyixun    时间: 2008-12-4 16:14
奇怪,你们加length就都能解决,我为什么就不能呢?9013其实就是操作缓冲区错误,除了用length,怕还要保存为参数才行,如果有/X00这样的东东,参数都还必须要用data中的才行!
作者: mumu88    时间: 2009-9-29 11:44
标题: 用lrs_length_send函数
系统会提示 Error : Specified buffer lrs_length_send : doesn't exist. Error code : 9011错误
作者: mumu88    时间: 2009-9-29 11:54
标题: 如何使用,能否发到我的邮箱里
mumumu88@sohu.com
作者: evergreen_wang    时间: 2009-11-15 00:25
如何解决怎么不提交出来让大家有的参考呢?同样遇到这个问题,是压缩后的数据进行发送,使用lrs_length_send 提示9011错误!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2