现在我能够实现基本功能,以下在局域网中测试:对于一个50M左右的文件,现象为:
如果我每包发送7kB,则发送端很快就发送完毕,接收端则要较长的时间接收完
如果我每包发送1KB,发送端也会较快发送完毕,接受端较长时间接收完
如果每包100B,发送端和接收端能够同步,但速度又太慢不知道在传送文件的时候发送和接收的速度是否应该同步??
如果是,我该怎么去做到?需要每发一包给一个回执么?
还有,象ftp那样能够显示文件传送速度的功能是怎么实现的?欢迎大家讨论,能够给出源码更好,谢谢!

解决方案 »

  1.   

    还是接受端的数据处理的问题.不用发回执,TCP连接保证了不掉包的.这些都是底层的,不用管.你每次发送7K,50M的文件,那么是不是就把文件分成7/50000份了,接受端每接到一个包进度条就前进,那不是就有进度了么?
      

  2.   

    尽管知道TCP协议可能会做数据的疏导
    但总感觉自己是蒙在鼓里不知道正规的做法是怎么样的?
    例如ftp是怎么做的?
      

  3.   

    那是你自己的感觉而已,发送的速度和你的程序有关.发送不过是把包放到网络上去.至于接收的问题那是和网络状况,数据处理有关.数据包在发送过程中是编过号的,不同的包到达目的地有不同的时间,中间出现掉包,由链路层负责告诉主机重新发送上一个包.到了目的地就会被放在缓冲区里.所有的的这些因素都影响了你的数据接受速度.FTP只不过是一种握手协议而已.是基于TCP/IP的.他的传送速度也是因为各种原因,乃至不同软件有差别.如果你想要回执的话就象FTP协议一样,建立双通道.一个用来传送命令,一个用来传送数据好了.但是我觉得是没有必要的.
      

  4.   

    Private Sub Winsock1_SendComplete()
    '每发
    End Sub
      

  5.   

    Private Sub Winsock1_SendComplete()
    '发完你的8k后会有这个事件,然后发下一个8k就行了,不过好像winsock有一个默认的8000(8k)左右的缓冲,最好设成大于10k
    End Sub
      

  6.   

    地址:http://www.mofile.com/
    提取码:4454449432311593
      

  7.   

    to : qyii(向范敬宜同志学习!) 
    我已提取该文件
    我可能有更好的解决办法
    但还是非常感谢你的帮助