• 何为“秒传”


    写在前面

    最近一直在弄文件传输的组件,在讨论组里面,有同事提到“秒传”的功能。在目前的通信软件中也有网盘的功能,就从网上搜了一下,这里对“秒传”的实现思路做一下总结,在之后会写一个小的demo实现一下。没有其他,只为觉得好玩。

    秒传

    其实知道原理了,实现起来也很简单了。

    秒传是一种在网盘上常见的“忽略式”上传方式,就是您上传了一个文件名为111.exe,MD5为一个数,有一个网友以前也上传一个叫111.exe,MD5和您上传的文件MD5码一模一样,所以这个文件上传到服务器上的时间就很短了,这是因为别人上传过这个文件,您上传这个文件,服务器上有这个文件了,所以服务器发放给你一个文件访问地址就行了!

    上传到网盘的每个文件,服务器都会校验MD5码。如果这个您上传的文件MD5码与已经存在于服务器里的文件的MD5码相同的话,网盘服务器将会判断成为重复文件,只需要复制副本保存在网盘上即可,无需重新保存,因为有过这个文件,于是很快完成上传任务,并在有人需要下载的时候将原有的该文件的下载地址放出。这样实现了服务器的高效运作。

    把你要上传的东西压缩成RAR,东西上传,服务器会先做MD5校验,如果服务器上有一样的东西,它就直接给你个新地址,其实你下载的都是服务器上的同一个文件,想要不秒传,其实只要让MD5改变,就是对文件本身做一下修改(改名字不行),例如一个文本文件,你多加几个字,MD5就变了,就不会秒传了。
    但是有些文件我们不好改变,也不想改变,那其实只要压缩一下,MD5就变了,而下载的人也能获得最原始的资料,不过就是加压要花费一点时间。

                                                                                                                                                                                                                   ----百度百科

    画一个简单的模型:

    当然,服务器端是默认接收文件的,接收的时候,就要判断该md5是否已经存在,如果存在则说明存在该文件,则向客户端发送一个命令,说明文件已经存在,则客户端不必再发送后续的文件包。

    总结

    其实当你知道,什么是秒传的时候,实现起来并不太难,你使用wcf也好,开源的superscoket也好,服务器端总归能弄好的。在后面,将使用wcf做一个简单的例子。还是那句话,只是觉得好玩。 这里记录一下“秒传”的实现思路,也算是对网盘秒传功能的一个简单的预研。

  • 相关阅读:
    准备找工作了,求助于在成都的师兄、师姐们提供一些信息!大家都看看吧!
    大学课程名的中文翻译
    火箭今天赢了!!!
    如何成为一个受欢迎的人!
    理解DataSet的数据缓存机制
    餐桌上的不文雅行
    今天看到居然有100多个Gmail的邀请函,还没有Gmail的朋友留下邮箱地址!
    Update:代码行计算器(LinesCounter)
    找工作之“加班费”
    动画片里的Ajax
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/4284868.html
Copyright © 2020-2023  润新知