当前位置:编程学习 > VB >>

为什么用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 ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,