今天写了一段代码,想用winsocket的udp方式发送自定义的数据类型,但是返回了错误:只有在公共对象模块中定义的公共用户定义类型可以被使用为类模块公共过程的参数或返回类型、或作为公共用户定义类型的字段代码如下
Private Type test
    i As Integer
    ii As String
End Type
'定义ss为自定义的数据类型
Dim ss As testPrivate Sub Form_Load()
    '控件的名字为 udpPeerA
    With udpPeerA
        .RemoteHost = "192.168.0.1"
        .RemotePort = 9191   '连接的端口号
        .LocalPort = 9192
        .Bind 9192                '绑定到本地的端口。
    End With
End SubPrivate Sub txtSend_click()
    '在按钮按下时,立即将其发送出去。
      udpPeerA.SendData ss
End Sub不知道为什么,难道socket不能发送自定义的数据类型?谢谢

解决方案 »

  1.   

    可以的,不过需要api()copymoney配合
      

  2.   

    用api
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)将结构体变成byte()然后接受byte()转化成结构体举例说明一下。Option ExplicitPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Private Sub Command1_Click()
        Dim i As Long
        Dim j As Long
        i = 123456
        CopyMemory j, i, Len(i)    ' 将 i 的内容复制到 j 中。
        MsgBox j
    End Sub
      

  3.   

    这个时候才能显示出XML的威力所在..