为什么用winsock数据接收不全
我在服务端用以下程序发送数据文件:Dim FileByte() As Byte
LenFile = FileLen(rarFile)
ReDim FileByte(LenFile - 1)
getFileNum = FreeFile
sendStartTime = Timer
Open "d:\data1.dat" For Binary As #getFileNum
Get #getFileNum, , FileByte
If Winsock1.State = sckConnected Then
Winsock1.SendData FileByte
'DoEvents这句有还是没有似乎作用不大
End If
Close #getFileNum
客户端用如下程序接收数据
getFileNumber = FreeFile
Open "c:\data.dat" For Binary As #getFileNumber
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim FileByte() As Byte
Winsock1.GetData FileByte, vbArray + vbByte
Put #getFileNumber, , FileByte
If LOF(getFileNumber) = fileLength Then
Close #getFileNumber
msgbox "文件发送完成"
end if
End Sub
以前一直正常,现在却发现有些机器上能成功(一台老爷笔记本),有些电脑(新台式机)老是发送到大半(多数是99%)就没有了。各位看看什么原因。
原来的程序我是用分块发送的,后来发现服务端能一次发送文件,winsock会自行拆包发送,感觉这样简单,所以用了这种模式,不知是不是这个原因 --------------------编程问答-------------------- 是不是与缓存设置有关? --------------------编程问答-------------------- 缓存怎么设置 --------------------编程问答-------------------- 网上很多源程序都是拆包后发送文件的,这样做对大文件较好。但我传送的多是小文件,一般最大也就20几兆,所以就用winsock控件一次发送,这样做没问题吧,因为以前是可行的,现在发现客户端差的机器能正常接收,就是好一点机器上不行
补充:VB , 网络编程