我需要截取屏幕然后发送给出去。
现在使用的方法是:    Dim ChunkSize As Long
    Dim Chunk() As Byte
    Dim arrHash() As Byte
    If wsSend.State <> sckConnected Then Exit Function
    ChunkSize = FT_BUFFER_SIZE
    If FileNum = 0 Then
        FileNum = FreeFile
        Open ftSend.FileToSend For Binary As #FileNum
    End If
    If (LOF(FileNum) - Loc(FileNum)) < FT_BUFFER_SIZE Then ChunkSize = (LOF(FileNum) - Loc(FileNum))
    ReDim Chunk(0 To ChunkSize - 1)
    Get #FileNum, , Chunk
    DoEvents
    wsSend.SendData Chunk
    Sentbyt = Sentbyt + ChunkSize
    'ByteSec = ByteSec + ChunkSize
    If Sentbyt = ftSend.FileSize Then
        Complete = True
        Close #FileNum
    End If这样速度慢:
我想一次把文件读入数组然后按照Buffer大小分块发送出去,请各位给出指点(最好有源码)

解决方案 »

  1.   

    以上代码就是按照FT_BUFFER_SIZE大小分块发送的,已经不慢了呀。
    你执行起来慢是因为网络的原因,而不是未把文件一次读入数组的原因。或者是你设置的FT_BUFFER_SIZE太小了。
      

  2.   

    FT_BUFFER_SIZE设置是否限制的?
    是否能把程序这样改写?
    1.打开文件用Get的方式把文件内容传入数组。
    2.按数组大小进行循环,然后发送。
    这样就不用在循环过程中使用Get的发式,然后发送。
    楼上的大哥:
    能不能按我的思路把这段代码改写一下。谢谢
      

  3.   

    我的一个程序也用过这段代码,FT_BUFFER_SIZE为5734,经测试在100M局域网中传输速度一般在800K/S~3M/S之间。至于FT_BUFFER_SIZE的值,一般别超过Winsock的缓冲区8192就应该问题不大。
    你无需改写这段代码,相对于网络传输的速度来说,无论用那种方式来读取文件,都无需考虑对整体速度的影响。