我需要截取屏幕然后发送给出去。
现在使用的方法是: 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大小分块发送出去,请各位给出指点(最好有源码)
现在使用的方法是: 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大小分块发送出去,请各位给出指点(最好有源码)
你执行起来慢是因为网络的原因,而不是未把文件一次读入数组的原因。或者是你设置的FT_BUFFER_SIZE太小了。
是否能把程序这样改写?
1.打开文件用Get的方式把文件内容传入数组。
2.按数组大小进行循环,然后发送。
这样就不用在循环过程中使用Get的发式,然后发送。
楼上的大哥:
能不能按我的思路把这段代码改写一下。谢谢
你无需改写这段代码,相对于网络传输的速度来说,无论用那种方式来读取文件,都无需考虑对整体速度的影响。