想做一个断点续传的程序,基本原理我明白(就是采用移动文件指针的方法),但我不知道怎么判断前后两次传,传输的两个文件是不是同一个文 如题:假如,开始我向对方传c:\a.rm文件,中途断掉,下次我传c:\directory\a.rm,虽然这两个文件名都是a.rm,但内容是完全不同的,那对方怎么知道是新的文件还是上次未传完的文件,或者说,是续传,还是重新传?有什么比较高效且准确的方法判断吗?谢谢~~~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你是自己写的客户端和服务器,那就简单了,客户端请求指定文件位置间的CRC值(MD5、HASH都可以)。服务器把计算出来的值发给客户端,客户端计算看看本地的和服务器是不是一样。当然简单的你可以用文件大小、修改时间来比较。 CRC值怎么算?有现成的代码吗?还有,用文件大小和时间能看出来吗?不行吧!!!! CRC:http://www.vckbase.com/document/viewdoc/?id=970MD5数据校验http://www.vckbase.com/document/viewdoc/?id=1275 我认为不需要检测文件路径,只要是同一个文件,不管它位于什么位置,都应该可以用断点续传qq就是这样做的。不管前后两次传输文件是不是在同一个位置,只要是同样的文件内容,都算断点续传。关键是怎么判断前后两次是不是同一个文件,crc编码好象不行的,它只是一种编码。假如,我的文件为200MB,第一次传了10MB,第二次开始传,我怎么校验文件的crc码是不是原来那个?是不是要在接收端写个配置文件,保存这些信息呢?不解中!!!! 唯一识别文件的方法就是用MD5."迅雷下载"就是靠MD5唯一识别文件的.就好比"身份证"?哈哈 1.客户端请求0-10M内容的Md5值,服务器计算出10M的MD5值,然后发给客户端。2.客户端比对MD5值一样,则内容相同。 回应以上各位。1.算md5值会不会效率很低?不知道算一个几百MB文件的md5值会用多长时间,要考虑效率问题。2.如果只比较0-10M的MD5,那如果其余部分不相同怎么办?这也应该不算断点续传吧。我用qq做过试验,只要在文件末尾加一个字母,qq都不算断点续传,所以,我认为,肯定不能只对已经传过的部分做md5,应该还有别的方法! 1.算md5值会不会效率很低?不知道算一个几百MB文件的md5值会用多长时间,要考虑效率问题。看机器的速度,主要是IO的速度。7200转的硬盘,200M约在十几秒。2.如果你要上次传的文件和这次一样的话,你可以在开始传的时候把整个文件MD5一次,把值告诉客户端。客户端记载某个地方。如果文件变了,那么在客户端收到的MD5值和上次保存的肯定不一样。 我觉得如果对大文件,全部内容做MD5,再进行传输,是很不明智的。那也太慢了吧??也许要花1分钟的时候做md5,然后再传?有没有其它快点的办法呢?再说,客户端把这些md5值存在哪里呢?有点麻烦啊 个人认为:1. 接受端先取得接受的文件的长度, 如果长度都不一致, 肯定不是同一个文件;2. 对发送的文件分块, 比如以256KB为单位, 分别计算出其MD5值;3. 接受端保存原始文件的若干MD5块的MD5值, 可以按照一定的间隔从原文件取得(如果文件过小, 可以减少块的数量, 或者直接验证所有的MD5块), 比如保存128个MD5块的值, 如果2个文件的这128块的MD5值都相同,而且文件长度也相同,那实在是非常巧合,没关系,我们还有方法,看下面.4.检查已接受的部分MD5值,判断是否相同,如果还相同,继续下面的步骤;5.老老实实的,完全检查已接受的数据,判断是否和原文件完全一致,如果一致,则认为是同一个文件. 1. 文件大小2. 文件名3. 服务器提供已接收部分的MD5,然后和客户端计算的MD5相对比。 毕设求助,wince软件分析求助 深圳软件园--紧急招聘VC软件工程师1名 动态产生了一个菜单,子菜单项是不固定的, 响应函数如何写 全屏显示界面的设计 是不是我要去读mfc的源代码才能用mfc? 有文档的指针,如何得到文档的句柄 IE中google的工具栏是如何做的? 如何在弹出的对话框中使用加速键? 谁安装过boost的类库啊?讲讲经验 深入浅出MFC中第一章有个问题? 高分 求图标代码 在线等 CHtmlView 点击链接新打开一个窗口,怎样获取这个URL
http://www.vckbase.com/document/viewdoc/?id=970MD5数据校验
http://www.vckbase.com/document/viewdoc/?id=1275
关键是怎么判断前后两次是不是同一个文件,crc编码好象不行的,它只是一种编码。
假如,我的文件为200MB,第一次传了10MB,第二次开始传,我怎么校验文件的crc码是不是原来那个?是不是要在接收端写个配置文件,保存这些信息呢?不解中!!!!
"迅雷下载"就是靠MD5唯一识别文件的.就好比"身份证"?
哈哈
2.客户端比对MD5值一样,则内容相同。
看机器的速度,主要是IO的速度。7200转的硬盘,200M约在十几秒。2.如果你要上次传的文件和这次一样的话,你可以在开始传的时候把整个文件MD5一次,把值告诉客户端。客户端记载某个地方。如果文件变了,那么在客户端收到的MD5值和上次保存的肯定不一样。
2. 对发送的文件分块, 比如以256KB为单位, 分别计算出其MD5值;
3. 接受端保存原始文件的若干MD5块的MD5值, 可以按照一定的间隔从原文件取得(如果文件过小, 可以减少块的数量, 或者直接验证所有的MD5块), 比如保存128个MD5块的值, 如果2个文件的这128块的MD5值都相同,而且文件长度也相同,那实在是非常巧合,没关系,我们还有方法,看下面.
4.检查已接受的部分MD5值,判断是否相同,如果还相同,继续下面的步骤;
5.老老实实的,完全检查已接受的数据,判断是否和原文件完全一致,如果一致,则认为是同一个文件.
2. 文件名
3. 服务器提供已接收部分的MD5,然后和客户端计算的MD5相对比。