断点下载后,文件完整性出问题(100分)

  • 主题发起人 主题发起人 huangjacky
  • 开始时间 开始时间
H

huangjacky

Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的,如果我cs同机就没有问题,cs不同机就下载完了文件是损坏。
我的断点用的fileStream来载入,然后服务端来seek。

我很奇怪为什么本机没有问题,cs不同机就出问题了。
问问大家有什么其他的意见没有?
还有就是断点的时候需要注意什么?
 
同机时不丢包,不同机时会丢包
 
我发的包是10k,客户端收到包
readbuf返回值也是10k,说明从Socket到buf里面全部读出来是10k,然后查看我指定目录下面的临时文件,的确也存储了10k,然后客户端请求继续下载,但是它传来的参数就只有8192了
 
呵 8192可是indy buf的最大长度
 
不是用的indy
用的TClientSocket和TServerSocket
现在改写由3方文件来记录断点,然后出错的时候写入断点位置。
发现客户端和服务端断点位置都没有错,但是最后组装的文件的md5值还是不行。
我服务端用的blockRead 一个buffer然后socket把buffer发出去。
客户端的socket 读取一个buffer,这里读取出来的值和包的长度一样,代表没有丢失吧。
然后把这个buffer 进行blockWrite,本地是没有错的,可是cs不同机就出现问题。
一直无法解决
 
你把主要代码贴出来吧,看你样子觉得是细节上的问题了
 
你邮箱多少吧。我发给你
 
换成Indy吧
这个东西好像bug挺多的
 
你在本机都是采用了TCP/IP通讯系统的缓存..你在本机就是相当于两个进程通过这个共用的内存而进行的
而你在两台机子上的系统缓存不一样..所以不行了..
我不知道你是怎么处理的,但错误一定是有了...
 
首先ctNonBlocking下TClientSocket控件可能会丢失最后一个包.所以可能出问题.谢谢各位了
 
多人接受答案了。
 
后退
顶部