大家好
我试图用sock发送一串数据包
首先我现将数据包赋值到s上,然后将其发送出去
dim s
s = array (&h....)
sock.senddata s
代码是这样写的,但是不成功,编译不过,提示说不支持变体类型。
请问应该如何对s赋值?
请各位高手帮帮忙~!小弟先谢了~! 
在线等答案~!

解决方案 »

  1.   

    无论是字符串或byte数组,直接发送就是了。只是接收时相应地恢复就可以了。
    dim s as string '或 dim s() as byte
    sock.senddata s
      

  2.   

    我试过有string形式,可是抓包发现,发出去的就不是数据包了
    byte形式的赋值怎么写?
    我是这样写的
    dim s() as byte
    s=(&h....)
    但是不对,请您在解释一下,谢谢了~!
      

  3.   

    上面的问题已经解决了
    我是这样写的
    dim s as string
    s=chr(&h..)+chr(&h..)+...
    但是发出去了之后抓包发现,他把&ha3,&h81还有&ha7都给我改成了0
    请问这是怎么回事?用什么方法来解决?
    请高手指点~!
      

  4.   

    后来我又发现只要是大于&h81的抓包显示都会被置0
    是不是我的数据类型定义错了?
    望高手抽出点时间帮我解答下,谢谢了~!
      

  5.   

    中文系统中Winsock发送字符串时会以unicode形式传送,估计是因为对字符串进行了转换的原因。
      

  6.   

    variant数据类型的数组不能直接引用地址,前面会有几个字节的variant头。
    字符的问题,能把你的字符和抓包的信息全部贴上来吗(把&H7F以下和&H80以上混在一起)。
      

  7.   

    不好意思,抓包的内容不方便给你
    现象就是7f后的都被置成了0
    我是这样定义的
    dim s as string
    s=chr()+chr()....
    sock.senddata s
    是不是字符串就是限制到7f
    有什么方法可以解决么?
      

  8.   

    你最好发送所有数据都为ByteArray
    例如你要发送字符串则应该为:
    Dim D() as Byte,S as string
    S="asdfasdfasdfasdfasdfwqerpoiqweru3234"
    B=strconv(s,vbfromunicode)
    Winsock.senddata b
    接收的时候应该为:
    Dim D() as byte,S as string
    winsock.getdata d
    s=strconv(d,vbunicode)这样既可以发送正确的东西又可以节省发送的数据量如果你要直接发送字符串出去
    发送的为unicode的数据
    例如:winsock.senddata "01234"
    则实际发送的为 字符串"01234"在内存中的样子,即:30 00 31 00 32 00 33 00 34 00
    而通过Strconv后,字符串被赋值到字节数组后的样子为:30 31 32 33 34
      

  9.   

    直接将大数组put进文件,然后get到bytes发送,接收的地方用bytes接收然后put进文件,然后get进对应类型的数组