dim abfile() as bytePrivate Sub wskclient_DataArrival(ByVal bytesTotal As Long)    '客户端一收到数据
Dim wskclientstrs() As Byte
??????
End Sub客户端收到的二进制数据,会被累加保存到abfile中,试过用wskclient.GetData wskclientstrs
abfile = abfile &(或+) & wskclientstrs但提示为出错.(如将ABFILE写入以二进制写入一个临时的文件,则没问题,但考虑到加密安全,只想让ABFILE保存到内存中.
希望达到效果:
接收到数据前abfile="",接收数据时abfile=abfile&收到的数据,接收完全数据时提示msgbox "ok"

解决方案 »

  1.   

    看看ReDim语句和CopyMemory API函数。
      

  2.   

    如果是字符传可以直接连起来!如果是integer的话,就需要还原后再使用
     要不以后不方便
      

  3.   

    Private Sub wskclient_DataArrival(ByVal bytesTotal As Long)    '客户端一收到数据
    Dim i As Long
    Dim j As Long
    Dim dummy() As Byte
    ReDim buff(bytesTotal) As Byte
    wskclient.GetData buff, vbbytes, bytesTotal
    ReDim dummy(lAlreadyTran) As ByteFor j = 1 To lAlreadyTran
        dummy(j) = PicBits(j)
    Next
    ReDim PicBits(lAlreadyTran + bytesTotal)
    'MsgBox (PicBits)
    For j = 1 To lAlreadyTran
    'MsgBox dummy(j)
        PicBits(j) = dummy(j)
    Next
    ReDim dummy(0) As Byte
    For i = 1 To bytesTotal
       PicBits(lAlreadyTran + i) = buff(i - 1)
    NextlAlreadyTran = lAlreadyTran + bytesTotal实现了.所有数据存储在全局变量PicBits中.不过最开头的地方会多个0字节,再用一次REDIM去掉即可.
      

  4.   

    或者用这段.更简单点.
    Dim i As Long
    Dim j As Long
    Dim dummy() As Byte
    ReDim buff(bytesTotal) As Byte
    wskclient.GetData buff, vbbytes, bytesTotal
    ReDim dummy(lAlreadyTran) As Byte
    If et = "" Then
    PicBits = buff
    et = "ok"
    Else
    ReDim Preserve PicBits(UBound(PicBits) + bytesTotal)
    For i = 0 To bytesTotal - 1
    PicBits(i + lAlreadyTran) = buff(i)
    NextEnd If
    lAlreadyTran = lAlreadyTran + bytesTotal
      

  5.   

    所以说数组哪能用&来做连接的呢。用COPYMEMORY的话,你的循环也可以省了。
      

  6.   

    嘻.不用会.迟些查下API手册先.
    原理上来说COPYMEMORY会比循环节省很多资源.
      

  7.   

    呵呵,我不觉得放在内存中是件好事,我以前也有做过一个C/S的网络通讯程序,本来想直接放在内存中,等接收完后再组合成文件放到硬盘上,发送小文件还可以,大文件呢,有1-N G的文件,你有G级以上的内存吗???把内存作为中转站吧,这样做更适合,我是这样觉得。
    在此想请教高手们,为什么我发送文件过去,有的EXE文件可以用有的不能用,但其它类型的就是能用,真是郁闷,如我发送一个安装程序,等接收完的时候,安装程序进度条走了一会儿,就告诉我安装包有错误???
      

  8.   


    试试这个:abfile =constrv(constrv(abfile,vbunicode) & constrv(wskclientstrs,vbunicode),vbfromunicode)
      

  9.   

    二进制数据一般不能用strconv,因为进行unicode与ANSI的转换,会改变Byte数组中的数据!其实VB是可以直接连接Byte数组的,可用下面方法:abfile = CStr(abfile) & CStr(wskclientstrs)至于这种方法的效率吗,可测试看看,绝不算慢!