初次用VB,要编写一个SOCKET通讯程序,由于要在传输数据时进行封装,要加数据报头,为此在Module里定义了一个用户数据类型Pkt_h(包括字符串,长整型),将报头和数据按各自类型及顺序放入Pkt_h中。但在传输时
    Winsock.SendData Pkt_h
    总是报错说“编译错误:只有定义在公用对象模块中用户定义类型能和变体类型相互转换或传递给后期绑定功能”,为什么?
    另外,二进制文件访问时,怎样得到每次读写的字节数呢?
    希望各位高手不吝赐教!

解决方案 »

  1.   

    自定义类型数据在内存中如果顺次排列的话可以试试用copymemory 放进一个byte数组里,然后用SendData 发送数组,在接受端用copymemory还原。
      

  2.   

    copymemory怎样定义的?我怎么敲进去后,VB没响应
      

  3.   

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
      

  4.   

    pDst 是目标变量 pSrc 是源变量 ByteLen是要复制的字节数
      

  5.   

    加了 CopyMemory strTemp(), Pkt_h, Size 之后
    报告编译错误,类型不匹配
      

  6.   

    CopyMemory strTemp(0), Pkt_h, Size VB里数组第一个元素就是地址,呵呵。