blocksize=4096' Adjust blocksize at end so we don't read too much datablocksize设置了单个数据包的大小,当文件大小超过设置时,会分成多个数据包来发送。

解决方案 »

  1.   

    回litsnake1(litsnake) :
    文件差异我也看过,每次都不一样,让我困惑不已。
      

  2.   

    估计是因为丢包造成的.每次发4K的数据丢包率已经很高了.你试试大于1K的文件分成几次来发,每次只发最多1K的数据.等收到对端确认已接收的消息后再发下一个1K.这样才能保证数据完整性.
      

  3.   

    回kuyu2020T(理想)
    真的吗?能否把你的程序给我一份?我的邮件是:[email protected]
      

  4.   

    '发送方
    Dim FileArray() As Byte
    Open "FileName" For Binary As #1
        ReDim FileArray(LOF(1))
        Get #1, , FileArray()
        Winsock1.SendData FileArray
    Close #1'接受方
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim FileArray() As Byte
    Static TotalLen As Integer
    '#1 is a open file
    Put #1, , FileArray
    TotalLen = TotalLen + bytesTotal
    If TotalLen >= FileLen Then Close #1
    End Sub
      

  5.   

    可能是你在接收的时候PROFRESSBAR的VALUE有问题,因为你在赋值的时候跳过了.这个问题我也发生过,死活查不出原因,你试试
      

  6.   

    不好意思,没看清楚,我说的progressbar的value不对,是因为我的程序里用progressbar的value来控制读入位置,也就是当分包时,用来判断从哪开始分包,因为我觉得你的程序里没有写清楚每个分包从哪开始分,在接收时,没写清楚封装怎么接,因此我觉得PUT函数应该有个参数要指定从哪开始写入数据.
    或者你的文件打开方式有错误
      

  7.   

    请问传输文本文件和传输其他文件(如DOC,XLS,EXE等等),有什么不同吗?
    因为这一段文件传输程序,在传输文本文件时是正常的,但传输其他文件时总是不正常!向各位请教!