方法1:服务器端没必要循环,一次性发送即可。不过这样需要先传文件长度到客户端进行判断。 方法2:改成: For i = 0 To lngFile/1024 +1 '传送的次数为总长度/1024 因为每次传送1024个字节,而不是一个字节。 ReDim myFile(1023) As Byte Open fileName For Binary As #1 Get #1, i * 1024 + 1, myFile Close #1 sSocket.SendData myFile DoEvents ProgressBar1.Value = ProgressBar1.Value + 1 Next i PS:第二种方法有缺陷。因为客户端没判断是否文件传输是否结束,那么每次服务器端传输的东西,都会被写入文件中。
方法2:改成:
For i = 0 To lngFile/1024 +1 '传送的次数为总长度/1024 因为每次传送1024个字节,而不是一个字节。
ReDim myFile(1023) As Byte
Open fileName For Binary As #1
Get #1, i * 1024 + 1, myFile
Close #1
sSocket.SendData myFile
DoEvents
ProgressBar1.Value = ProgressBar1.Value + 1
Next i
PS:第二种方法有缺陷。因为客户端没判断是否文件传输是否结束,那么每次服务器端传输的东西,都会被写入文件中。
VB源码:网络收发文件并计算传输速度
http://download.csdn.net/source/945095