winsock的发送接受数据问题。想把服务器端数组myfile (9,3)中的数据传给客户端receivefile(9,3)。但收到的都是0。哪儿错了?
我是写的代码
发送代码
dim myfile (9,3) as byte
sckserver.SendData myfile
接受:
dim receivefile(9,3)as byte 
SckClient.GetData receivefile,vbarray+vbbyte For j = 0 To 9 Step 1
         For i = 0 To 3 Step 1
                    Debug.Print receivefile(j, i);
         Next
     Next
收到的都是0。数据没有传到吗?请大侠指正!数组到底怎么传输?
拜csdn高人!

解决方案 »

  1.   

    换成单维数组看看吧,好像Winsock控件只发送了第1维的维数那么多的字节
      

  2.   

    改为一维数组后依然不对,怎么解决?
    dim myfile (3) as byte
    sckserver.SendData myfile
    接受:
    dim receivefile(3)as byte 
    SckClient.GetData receivefile,vbarray+vbbyte 
             For i = 0 To 3 Step 1
                        Debug.Print receivefile(i);
             Next
    收到的都是0。数据依然没有传到吗?
      

  3.   

    dim receivefile as Variant
      

  4.   

    to:zhujiechang(小朱) 
    错误提示:不支持的变体类型
      

  5.   

    发送端的……
    Option ExplicitPrivate Sub Command1_Click()
        With Winsock1
            .Connect "127.0.0.1", 1234
        End With
    End SubPrivate Sub Winsock1_Connect()
        Dim b(4) As Byte
        b(0) = Asc("H")
        b(1) = Asc("e")
        b(2) = Asc("l")
        b(3) = Asc("l")
        b(4) = Asc("o")
        
        Winsock1.SendData b
    End Sub接收端的……
    Option ExplicitPrivate Sub Form_Load()
        With Winsock1
            .Bind 1234
            .Listen
        End With
    End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
        If Winsock1.State <> sckClosed Then Winsock1.Close
        Winsock1.Accept requestID
    End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim b() As Byte
        ReDim b(bytesTotal - 1)    Winsock1.GetData b, vbArray + vbByte
                
        Debug.Print StrConv(b, vbUnicode), bytesTotal
    End Sub
      

  6.   

    感谢楼上的大侠,虽然问题还没有解决。
    to:zhujiechang(小朱) 
    我要的是接受数组,作用的结果不全也不好分离开。
      

  7.   

    Winsock1.GetData b, vbArray + vbByte
      

  8.   

    to:supergreenbean(超级绿豆)我按你的程序修改了一下,接受到的不对。
    代码:
    服务器端:
    Private Sub SockServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim Tkey_temp(3) As Byte
    Tkey_temp(0) = 110
      Tkey_temp(1) = 25
      Tkey_temp(2) = 23
      Tkey_temp(3) = 250
    SockServer(SockNum).SendData Tkey_temp
    Exit Sub客户端:
    Private Sub SockClient_DataArrival(ByVal bytesTotal As Long)
    Dim cerr
    On Error GoTo cerr
    Dim b() As Byte
        ReDim b(bytesTotal - 1)    SockClient.GetData b, vbArray + vbByte
                
        Debug.Print StrConv(b, vbUnicode), bytesTotal
    end sub
      

  9.   

    测试通过!supergreenbean(超级绿豆) 的方法ok!!