我在服务端用以下程序发送数据文件:
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 #getFileNumberPrivate 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会自行拆包发送,感觉这样简单,所以用了这种模式,不知是不是这个原因
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 #getFileNumberPrivate 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会自行拆包发送,感觉这样简单,所以用了这种模式,不知是不是这个原因
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货