CN101325611A - 一种点对点下载的方法及装置 - Google Patents

一种点对点下载的方法及装置 Download PDF

Info

Publication number
CN101325611A
CN101325611A CNA2008101262839A CN200810126283A CN101325611A CN 101325611 A CN101325611 A CN 101325611A CN A2008101262839 A CNA2008101262839 A CN A2008101262839A CN 200810126283 A CN200810126283 A CN 200810126283A CN 101325611 A CN101325611 A CN 101325611A
Authority
CN
China
Prior art keywords
client
acting server
file
lan
module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2008101262839A
Other languages
English (en)
Inventor
资冰冰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kingdee Software China Co Ltd
Original Assignee
Kingdee Software China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kingdee Software China Co Ltd filed Critical Kingdee Software China Co Ltd
Priority to CNA2008101262839A priority Critical patent/CN101325611A/zh
Publication of CN101325611A publication Critical patent/CN101325611A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明提供了一种点对点下载的方法,包括:第一客户端向第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;根据所述请求参数,第一代理服务器向第一客户端所处的局域网内的其他客户端发送用户数据包协议UDP消息,所述UDP消息包括所述请求参数;第一代理服务器接收到所述局域网内的第二客户端的反馈消息之后,将所述请求参数转发至所述第二客户端的第二代理服务器;第二代理服务器根据所述请求参数查找相应的存储文件,并将存储文件返回至第一代理服务器;第一客户端保存所述存储文件。运用本发明的方法,可以把远程服务器下载变为局域网内下载,极大地提高了文件下载速度。本发明还提供了一种点对点下载的系统。

Description

一种点对点下载的方法及装置
技术领域
本发明涉及通信技术领域,特别是涉及一种点对点下载的方法及装置。
背景技术
随着通信技术的不断发展,通信领域中对于资源共享的要求越来越高,在网络互联中,接入网络的计算机都可以从其他计算机中下载需要的资源,其中,在网络中普遍存在的下载方法一般是基于客户端-服务器(Client/Server,C/S)模式的,C/S模式是一种软件系统体系结构,通过C/S模式可以充分利用硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是C/S形式的两层结构,所述服务器为在网络环境下运行相应的应用软件,为网上用户提供共享信息资源和各种服务的计算机,通常采用高性能的个人计算机(Personal Computer,PC)、工作站或小型机,并可以采用大型数据库系统,如ORACLE、SYBASE、InfORMix或SQL Server,而客户端则相应地需要安装专用的客户端软件。
服务器一般都可以给用户提供不同需求的下载文件,现在技术中有一种基于客户端-服务器模式的下载方法,其中,每个客户端都可以从服务器获取文件的下载,当客户端需要更新文件时,就会向远程服务器发送下载请求,当服务器接收到所述下载请求后,会根据下载请求的内容,查询存储的相应文件信息,若能够查询到所述客户端需要更新的文件信息时,便将查询到的文件实时返回至客户端,这样就实现了客户端从服务器下载文件的过程。
但是,这种方法也存在缺点,可以看出,下载文件的速度一般是根据网络情况实时改变的,如果客户端与服务器不在一个局域网内,特别是当许多客户端同时下载大文件时,客户端的下载速度受到很大的限制,使得很多客户端的下载速度都及其缓慢,进一步的,如果服务器没有客户端所需的文件,那么客户端就不能再下载文件,服务器需要保证二十四时都能运行,以提供文件给需要的客户端下载,这种运行方式给服务器造成了很大的负荷,使得服务器的性能较差,再者,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,需要的维护成本很高。
总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够提出一种点对点下载的方法,用以解决在客户端的下载过程中需要从远程服务器下载文件使得下载速度较慢的问题。
发明内容
本发明所要解决的技术问题是提供一种点对点下载的方法,用以解决在从远程服务器下载文件的过程中下载速度较慢的问题,进一步的,还可以减轻服务器的负荷,提升服务器的性能。
本发明的另一个目的是将上述构思应用于具体的应用环境中,提供一种点对点下载的装置,从而保证该方法的实现和应用。
为解决上述技术问题,本发明实施例提供了一种点对点下载的方法,包括:
第一客户端向第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;
根据所述请求参数,所述第一代理服务器向所述第一客户端所处的局域网内的其他客户端发送用户数据包协议UDP消息,所述UDP消息包括所述请求参数;
所述第一代理服务器接收到所述局域网内的第二客户端的反馈消息之后,将所述请求参数转发至所述第二客户端的第二代理服务器;
所述第二代理服务器根据所述请求参数查找相应的存储文件,并将所述存储文件返回至第一代理服务器;
所述第一客户端保存所述存储文件。
优选的,还可以包括:
启动所述第一客户端所在局域网的所有客户端的代理服务器。
优选的,所述启动所述第一客户端所在局域网的所有的客户端的代理服务器的步骤包括:
当操作系统开始运行时,启动所述第一客户端所在局域网的所有客户端的代理服务器。
优选的,所述启动所述第一客户端所在局域网的所有的客户端的代理服务器的步骤包括:
所述第一客户端所在局域网的所有更新组件启动所述局域网的所有代理服务器。
优选的,其特征在于,所述文件信息包括所述需要下载的文件名称和第一MD5值。
优选的,所述第一客户端保存所述存储文件的步骤之后,还包括:
生成所述存储文件的第二MD5值。
优选的,还包括:
比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
本发明实施例还提供了一种点对点下载的系统,包括:
第一客户端,所述第一客户端包括发送请求参数模块和保存文件模块,所述发送请求参数模块用于向已经启动的第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;所述保存文件模块用于保存从第二客户端下载的存储文件;
第一代理服务器,所述第一代理服务器包括发送广播消息模块、接收反馈消息模块和转发请求参数模块,所述发送广播消息模块用于根据所述请求参数,向所述第一客户端所处的局域网内的其他客户端发送UDP消息,所述UDP广播消息包括所述请求参数;所述接收反馈消息模块用于接收所述局域网内的第二客户端的反馈消息;所述转发请求参数模块用于在接收反馈消息模块接收到所述反馈消息后,将所述请求参数转发至所述第二客户端的第二代理服务器;
第二代理服务器,所述第二代理服务器包括查找模块和返回模块,所述查找模块用于根据所述请求参数在第二客户端中查找相应的存储文件,所述返回模块用于将所述存储文件返回至第一代理服务器;
第二客户端,用于向所述第二代理服务器提供所述相应的存储文件。
优选的,还包括:
启动装置,用于启动所述第一客户端所在局域网的所有客户端的代理服务器。
优选的,还包括:
生成装置,用于生成所述存储文件的第二MD5值。
优选的,还包括:
比较装置,用于比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
与现有技术相比,本发明具有以下优点:
在本发明实施例中,第一客户端的第一代理服务器向同一局域网内的其他代理服务器发送UDP消息,所述UDP消息包括需要下载的文件参数,从而无需登录远程服务器,当其他代理服务器接收到所述UDP消息后,会根据所述消息中的文件名称以及MD5值,查找相应的存储文件,若能查找到相应的文件,便将信息反馈给所述第一代理服务器,通知第一代理服务器到存储有相应的存储文件的第二代理服务器下载文件,本发明可以将远程服务器下载变为局域网内下载,局域网内的下载速度大大高于广域网上的下载速度,因此极大地提高了文件的下载速度。
附图说明
图1是本发明的一种点对点下载的方法实施例1的流程图;
图2是本发明的一种点对点下载的方法实施例2的流程图;
图3是本发明的一种点对点下载的系统优选实施例的结构框图;
图4是应用图3所示的系统优选实施例进行点对点下载的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
参考图1,示出了本发明的一种点对点下载的方法实施例1的流程图,可以包括以下步骤:
步骤101:第一客户端向第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;
步骤102:根据所述请求参数,所述第一代理服务器向所述第一客户端所处的局域网内的其他客户端发送用户数据包协议(User DatagramProtocol,UDP)消息,所述UDP消息包括所述请求参数;
步骤103:所述第一代理服务器接收到所述局域网内的第二客户端的反馈消息之后,将所述请求参数转发至所述第二客户端的第二代理服务器;
步骤104:所述第二代理服务器根据所述请求参数查找相应的存储文件,并将所述存储文件返回至第一代理服务器;
步骤105:所述第一客户端保存所述存储文件。
需要说明的是,所述文件信息可以包括所述需要下载的文件名称和第一MD5值,所述MD5为信息-摘要算法(Message-Digest Algorithm 5),通常情况下,MD5的作用是,让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式。在实际中,每个文件都有一个固定的MD5值,文件内容一旦发生改变,文件的MD5值也会相应地发生变化,因此,当所述文件信息包括了文件名称和MD5值的时候,同一局域网的其他客户端就可以根据所述文件信息的内容查询相应的文件。
在实际应用中,客户端代理服务器的实现可以有多种办法,本实施例可以利用bat文件启动一个java程序,所述java程序可以完成代理服务的功能,可以接受其他客户端下载文件的请求,也可以理解为远程下载服务器在本机的一个代理,以便在从局域网内搜索文件时,能够使得局域网内的其他客户端搜索到。
可以看出,在本实施例中,第一客户端的第一代理服务器通过向同一局域网内的其他代理服务器发送UDP消息,从而无需登录远程服务器,当其他代理服务器接收到所述UDP消息后,会根据所述消息中的文件名称以及MD5值,查找相应的存储文件,若能查找到相应的文件,便将信息反馈给所述第一代理服务器,从而通知所述第一代理服务器到存储有相应的存储文件的第二代理服务器下载文件,本发明实施例可以将远程服务器下载变为局域网内下载,局域网内的下载速度大大高于广域网上的下载速度,因此极大地提高了文件的下载速度。进一步的,本发明实施例将多个客户端从服务器的下载方式转化为客户端之间的点对点下载,还可以减轻服务器的处理负荷,提高了服务器的性能。
参考图2,示出了本发明的一种点对点下载的方法实施例2的流程图,可以包括以下步骤:
步骤201:启动所述第一客户端所在局域网的所有客户端的代理服务器;
在实际应用中,每一个客户端都需要启动代理服务器,优选的,所述步骤201可以为:
当操作系统开始运行时,启动所述第一客户端所在局域网的所有客户端的代理服务器;
或者,优选的,所述步骤201也可以为:
所述第一客户端所在局域网的所有更新组件启动所述局域网的所有代理服务器;
步骤202:第一客户端向第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;
步骤203:根据所述请求参数,所述第一代理服务器向所述第一客户端所处的局域网内的其他客户端发送UDP消息,所述UDP消息包括所述请求参数;
步骤204:所述第一代理服务器接收到所述局域网内的第二客户端的反馈消息之后,将所述请求参数转发至所述第二客户端的第二代理服务器;
步骤205:所述第二代理服务器根据所述请求参数查找相应的存储文件,并将所述存储文件返回至第一代理服务器;
步骤206:所述第一客户端保存所述存储文件;
步骤207:生成所述存储文件的第二MD5值;
在本实施例中,所述第一客户端保存所述存储文件之后,还可以生成所述存储文件的第二MD5值;
优选的,本实施例还可以包括:
步骤208:比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
生成所述第二MD5值之后,可以对第一MD5值和第二MD5值进行比较,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件,从而对所述第一客户端下载的存储文件进行校验,若不是所述第一客户端需要下载的文件,需要重新下载。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
为使本领域技术人员更好地理解本发明,以下结合本发明在实际中应用的具体例子对本发明进一步说明。
点对点(Point to Point,P2P)下载是一种下载术语,可以理解为每个客户端除了可以从其他客户端下载文件外,还可以向其他客户端提供文件下载的功能。同时,点对点下载为一种对等互联网络技术,一种用于不同PC用户之间,不经过中继设备直接交换数据或服务的技术。在P2P网络中,PC用户可以直接连接到其他用户的计算机,而不需要连接到服务器上再进行浏览与下载。
步骤A1:启动所述第一客户端所在局域网的所有客户端的代理服务器;
其中,本步骤的说明详见方法实施例2,在此不再赘述;本步骤的目的可以使所述局域网内的每一个客户端都可以处理下载请求,需要说明的是,本地的代理服务还可以理解为一种socket监听,它会监听指定端口请求,当局域网的一台客户端需要下载文件时,首先连接它自身的代理服务,即建立一种本地的socket连接,其中,所述代理服务器具备接收下载请求、接收局域网内的UDP广播消息,以及发送局域网内的UDP消息的功能;
步骤A2:第一客户端向已经启动的第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;
在实际中,所述客户端都包括更新组件(updater)和代理服务器(download proxy),当客户端的更新组件需要更新文件时,就向已经启动的所述第一代理服务器发送文件下载的请求参数,其中,所述请求参数可以包括:需要下载的文件名称,本地存放路径,MD5值等,在实际中,所述请求参数可以为:
fileName:lib\client\eas\bd_account.client.jar,localPath:E:\kingdee171\eas\client,md5:d13ab90972a7b6f2f651879e44e95b02
其中,发送请求参数的示例代码可以如下所示:
url=″http://″+proxyServer+″/″+url;
     URL u=new URL(url);
     URLConnection cn=u.openConnection();
     cn.addRequestProperty(″localPath″,localPath);
     cn.addRequestProperty(″msgVersion″,″1.0″);
     cn.addRequestProperty(″fileName″,fileName);
     cn.addRequestProperty(″isSelf″,″true″);
     if(md5!=null&&md5.length()>0)
     {
        cn.addRequestProperty(MD5,md5.toLowerCase());
     }
        cn.connect();
步骤A3:根据所述请求参数,所述第一代理服务器向所述第一客户端所处的局域网内的其他客户端发送UDP消息,所述UDP消息包括所述请求参数;
所述第一代理服务器接收到所述请求参数之后,根据消息参数的内容,例如,需要下载的文件名称和MD5值等,向所述局域网内部的其他代理服务器发送UDP消息,所述UDP消息包括所述请求参数;
其中,UDP协议与TCP协议之间的不同之处,在于UDP协议不是一种基于稳定连接的通讯协议;UDP协议将独立的数据包从一台计算机传输到另外一台计算机,但是并不保证接受方能够接收到该数据包,也不保证接收方所接收到的数据和发送方所发送的数据在内容和顺序上是完全一致的;因此,UDP协议更类似于普通邮政服务,寄信人不能够保证所寄出去的信能够被收信人及时收到,后发出的信也许会比先发出的信更早到达;
在通用的以太网(Ehternet)构架下,计算机与计算机之间的数据交换都是通过交换机来完成的;如果一份数据需要被传送给多个接收者,在使用TCP/IP连接的情况下,数据发送者需要向交换机发送多个同样的拷贝,而交换机则负责将这多个拷贝分别发送给所有的接收者;在使用UDP数据广播的情况下,数据发送者只需要向交换机发送一个拷贝,交换机负责将这个信息制作多个拷贝发送给所有的机器,在这种情况下,使用TCP/IP连接会大大的增加网络的负担;在一个普通局域网中,可以认为由于网络状况较差而造成数据丢失的可能性比较小,而利用UDP协议进行数据交换能够大幅度减轻网络的负担,因此通过UDP协议向局域网内广播不会造成网络的阻塞,且可以很快的搜到需要下载文件,因此本发明采用UDP广播的方式;
发送UDP广播的示例代码如下:
sock=new DatagramSocket(Config.MES SAGE_CLIENT_PORT,Util.getInetAddress(Config.subnetMask));
DatagramPacket pack=new DatagramPacket(data,0,data.length,InetAddress.getByName(Config.MESSAGE_UDP_GROUP),Config.MESSAGE_SERVER_PORT);
sock.send(pack);
所述UDP消息的内容可以为需要下载的文件名和文件的MD5值,其中,服务socket可以如下所示:
sock=new MulticastSocket(new InetSocketAddress(addr,port));
                              sock.joinGroup(InetAddress.getByName(Config.MESSAGE_UDP_GROUP));
步骤A4:所述局域网内的第二代理服务器接收到所述UDP消息,当在缓存文件中查询到所述需要下载的文件时,向所述第一代理服务器返回消息;
需要说明的是,当所述第一代理服务器向局域网内其他代理服务器发送UDP消息时,其他代理服务器都会根据所述UDP消息从缓存文件中进行查询,所述缓存文件会在代理服务器启动的时候加载到内存中,用哈希表(HashTable)的形式进行存放,可以理解为key值为MD5值,value为文件的路径,其中,查询步骤的代码可以如下所示:
public static String getMd5File(String md5)
{   If(ht!=null)
      {
             return ht.getProperty(md5);//获取缓存里是否有MD5值对应的文件存在;
      }return null;
}
当某一个代理服务器查询到保存有所述需要下载的文件,且MD5值正确,就所述第一代理服务器返回消息,以通知所述第一客户端;
需要说明的是,当有多台客户端都保存有所述需要下载的文件时,其他客户端的代理服务器随即返回消息,当有一台客户端的代理服务器反馈消息之后,所述第一客户端的第一代理服务器即便接收到其他客户端的代理服务器的反馈消息,也将该反馈消息视为无效消息,不做任何处理,或者,也可以按照优先级的顺序,优先对某一个固定的客户端进行查询,当这个客户端不存在所述需要下载的文件时,才到所述局域网内的其他客户端上进行下载,所述第一客户端到哪一个客户端去下载需要的文件并不影响本发明的实现,因此本发明对此不做限定;
步骤A5:所述第一代理服务器接收到所述局域网内的第二客户端的反馈消息之后,将所述请求参数转发至所述第二客户端的已经启动的第二代理服务器;
所述第一代理服务器创建一个与所述第二代理服务器的socket连接,并将所述的请求参数通过所述连接发送给所述第二代理服务器;
步骤A6:所述第二代理服务器根据所述请求参数查找相应的存储文件,并将所述存储文件返回至第一代理服务器;
所述第二代理服务器在缓存文件中查找到相应的存储文件,所述第一代理服务器以流的形式写入所述存储文件;
步骤A7:所述第一客户端保存所述存储文件;
所述第一客户端将所述存储文件保存下来,则下载任务完成;在本例子中,代码可以如下所示:
private void saveFile(URLConnection cn,DownloadTask task)throwsException
    {
       if(!isSelf)
          return;
          boolean downloading=false;
          InputStream in=cn.getInputStream();//从创建的连接读取输入流
          File tempFile=null;
          long hasDownloaded=0;
          try
          {
               task.totalBytes=cn.getContentLength();
               File destFile=new File(localPath+fileName);
               if(!destFile.getParentFile().exists()){
                  destFile.getParentFile().mkdirs();
               }
               tempFile=new File(localPath+fileName+″.rs″);
               RandomAccessFile tmpFile=new RandomAccessFile(tempFile,″rw″);\\创建本地临时文件
               hasDownloaded=tmpFile.length();
               if(hasDownloaded>0){
                 System.out.println(″Continue download file[″+fileName+″]by proxy from break point[″+hasDownloaded+″]......″);
               tmpFile.seek(hasDownloaded-1);
          }
          byte[]buf=new byte[4096];
          long bytesDownloaded=0;
          for(;;)
          {
             int len=in.read(buf);
             if(len<=0)
               break;
             tmpFile.write(buf,0,len);\\把输入流写入文件
             bytesDownloaded+=(long)len;
             task.bytesDownloaded=bytesDownloaded;
           }
          tmpFile.close();
           downloading=true;
          if(downloading)
          {
            if(destFile.exists())
               destFile.delete();
            boolean b=tempFile.renameTo(destFile);
              if(!b){
                    throw new IOException(″Rename failure:″+destFile);
                }
              ProxyCacheFile.updateMd5File(localPath,fileName,md5);//更新缓存
                   System.out.println(″-------------------save file[″+fileName+″]from proxy stream success-------------------″);
               }
         }
        catch(Exception ex)
        {ex.printStackTrace();
            throw new RuntimeException(″IO Exception″+ex.getMessage()+″[″+tempFile.getAbsolutePath()+″]″,ex);
        }
        fnally
        {if(in!=null)
            in.close();//关闭流
        }
         }
优选的,本例子还可以包括以下步骤:
步骤A8:生成所述存储文件的第二MD5值;
步骤A9:比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
综上所述,本发明实施例可以将远程服务器下载变为局域网内下载,局域网内的下载速度大大高于广域网上的下载速度,因此极大地提高了文件的下载速度;同时,在本发明实施例中,将很多客户端从服务器的下载转化为了客户端之间的点对点下载,所以可以减轻服务器的处理负荷,提高了服务器的性能。
参考图3,示出了本发明的一种点对点下载的系统优选实施例的结构框图,可以包括以下装置:
第一客户端301,所述第一客户端包括发送请求参数模块和保存文件模块,所述发送请求参数模块用于向已经启动的第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;所述保存文件模块用于保存从第二客户端下载的存储文件;
第一代理服务器302,所述第一代理服务器包括发送广播消息模块、接收反馈消息模块和转发请求参数模块,所述发送广播消息模块用于根据所述请求参数,向所述第一客户端所处的局域网内的其他客户端发送UDP广播消息,所述UDP广播消息包括所述请求参数;所述接收反馈消息模块用于接收所述局域网内的第二客户端的反馈消息;所述转发请求参数模块用于在接收反馈消息模块接收到所述反馈消息后,将所述请求参数转发至所述第二客户端的第二代理服务器;
第二代理服务器303,所述第二代理服务器包括查找模块和返回模块,所述查找模块用于根据所述请求参数查找相应的存储文件,所述返回模块用于将所述存储文件返回至第一代理服务器;
第二客户端304,用于向所述第二代理服务器提供所述相应的存储文件。
优选的,所述系统还可以包括:
启动装置,用于启动所述第一客户端所在局域网的所有客户端的代理服务器。
优选的,所述系统还可以包括:
生成装置,用于生成所述存储文件的第二MD5值。
优选的,所述系统还可以包括:
比较装置,用于比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
在本实施例中,第一客户端向其第一代理服务器发送文件下载请求,所述第一代理服务器通过向所处局域网内部的其他客户端的代理服务器发送UDP消息,查询其他代理服务器上是否存储有第一客户端需要下载的文件,若第二代理服务器查询到相应的存储文件后,就可以通知所述第一客户端到第二客户端上下载相应文件,因此本发明实施例将远程服务器下载变为客户端之间的点对点下载,并采用UDP消息的广播形式,更能减轻网络的负担,大大提升了下载文件的速度。
参考图4,示出了应用图3所示的系统优选实施例进行点对点下载的流程图,可以包括以下步骤:
步骤401:启动装置启动第一客户端所在局域网的所有客户端的代理服务器;
步骤402:发送请求参数模块向已经启动的第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;
步骤403:发送广播消息模块根据所述请求参数,向所述第一客户端所处的局域网内的其他客户端发送UDP广播消息,所述UDP广播消息包括所述请求参数;
步骤404:接收反馈消息模块接收所述局域网内的第二客户端的反馈消息;
步骤405:转发请求参数模块在接收反馈消息模块接收到所述反馈消息后,将所述请求参数转发至所述第二客户端的已经启动的第二代理服务器;
步骤406:查找模块根据所述请求参数查找相应的存储文件,
步骤407:返回模块将所述存储文件返回至第一代理服务器;
步骤408:保存文件模块保存从第二客户端下载的存储文件;
步骤409:生成装置生成所述存储文件的第二MD5值;
步骤4010:比较装置比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种点对点下载的方法及点对点下载的系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1、一种点对点下载的方法,其特征在于,包括:
第一客户端向第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;
根据所述请求参数,所述第一代理服务器向所述第一客户端所处的局域网内的其他客户端发送用户数据包协议UDP消息,所述UDP消息包括所述请求参数;
所述第一代理服务器接收到所述局域网内的第二客户端的反馈消息之后,将所述请求参数转发至所述第二客户端的第二代理服务器;
所述第二代理服务器根据所述请求参数查找相应的存储文件,并将所述存储文件返回至第一代理服务器;
所述第一客户端保存所述存储文件。
2、如权利要求1所述的方法,其特征在于,还包括:
启动所述第一客户端所在局域网的所有客户端的代理服务器。
3、如权利要求2所述的方法,其特征在于,所述启动所述第一客户端所在局域网的所有的客户端的代理服务器的步骤包括:
当操作系统开始运行时,启动所述第一客户端所在局域网的所有客户端的代理服务器。
4、如权利要求2所述的方法,其特征在于,所述启动所述第一客户端所在局域网的所有的客户端的代理服务器的步骤包括:
所述第一客户端所在局域网的所有更新组件启动所述局域网的所有代理服务器。
5、如权利要求1所述的方法,其特征在于,所述文件信息包括所述需要下载的文件名称和第一MD5值。
6、如权利要求5所述的方法,其特征在于,所述第一客户端保存所述存储文件的步骤之后,还包括:
生成所述存储文件的第二MD5值。
7、如权利要求6所述的方法,其特征在于,还包括:
比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
8、一种点对点下载的系统,其特征在于,包括:
第一客户端,所述第一客户端包括发送请求参数模块和保存文件模块,所述发送请求参数模块用于向已经启动的第一代理服务器发送文件下载的请求参数,所述请求参数包括需要下载的文件信息;所述保存文件模块用于保存从第二客户端下载的存储文件;
第一代理服务器,所述第一代理服务器包括发送广播消息模块、接收反馈消息模块和转发请求参数模块,所述发送广播消息模块用于根据所述请求参数,向所述第一客户端所处的局域网内的其他客户端发送UDP消息,所述UDP广播消息包括所述请求参数;所述接收反馈消息模块用于接收所述局域网内的第二客户端的反馈消息;所述转发请求参数模块用于在接收反馈消息模块接收到所述反馈消息后,将所述请求参数转发至所述第二客户端的第二代理服务器;
第二代理服务器,所述第二代理服务器包括查找模块和返回模块,所述查找模块用于根据所述请求参数在第二客户端中查找相应的存储文件,所述返回模块用于将所述存储文件返回至第一代理服务器;
第二客户端,用于向所述第二代理服务器提供所述相应的存储文件。
9、如权利要求8所述的系统,其特征在于,还包括:
启动装置,用于启动所述第一客户端所在局域网的所有客户端的代理服务器。
10、如权利要求8所述的系统,其特征在于,还包括:
生成装置,用于生成所述存储文件的第二MD5值。
11、如权利要求10所述的系统,其特征在于,还包括:
比较装置,用于比较所述第一MD5值和第二MD5值,若两个值相同,则所述存储文件与所述第一客户端需要下载的文件为同一文件,若两个值不同,则所述存储文件与所述第一客户端需要下载的文件为不同的文件。
CNA2008101262839A 2008-07-30 2008-07-30 一种点对点下载的方法及装置 Pending CN101325611A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2008101262839A CN101325611A (zh) 2008-07-30 2008-07-30 一种点对点下载的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008101262839A CN101325611A (zh) 2008-07-30 2008-07-30 一种点对点下载的方法及装置

Publications (1)

Publication Number Publication Date
CN101325611A true CN101325611A (zh) 2008-12-17

Family

ID=40188932

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008101262839A Pending CN101325611A (zh) 2008-07-30 2008-07-30 一种点对点下载的方法及装置

Country Status (1)

Country Link
CN (1) CN101325611A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103391271A (zh) * 2012-05-08 2013-11-13 深圳市腾讯计算机系统有限公司 数据包转发方法和装置
CN103731447A (zh) * 2012-10-11 2014-04-16 腾讯科技(深圳)有限公司 一种数据查询方法及系统
CN104580276A (zh) * 2013-10-11 2015-04-29 深圳市腾讯计算机系统有限公司 信息推送方法、装置、系统及信息接入装置
CN105791436A (zh) * 2016-04-28 2016-07-20 杭州亿方云网络科技有限公司 一种文件同步系统及其同步方法
CN110191146A (zh) * 2019-03-21 2019-08-30 北京北信源软件股份有限公司 一种基于浏览器的文件远程调阅方法及系统
CN111193772A (zh) * 2019-12-05 2020-05-22 商客通尚景科技(上海)股份有限公司 文件下载方法及服务器
CN112165515A (zh) * 2020-09-17 2021-01-01 国义招标股份有限公司 一种基于云端服务器的文件存储方法及系统
CN114095508A (zh) * 2020-07-31 2022-02-25 南京理工大学 一种同交换机下p2p传输的方法
CN114338700A (zh) * 2021-12-23 2022-04-12 杭州星布智能科技有限公司 局域网点对点分布式存储方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103391271A (zh) * 2012-05-08 2013-11-13 深圳市腾讯计算机系统有限公司 数据包转发方法和装置
CN103391271B (zh) * 2012-05-08 2015-12-16 深圳市腾讯计算机系统有限公司 数据包转发方法和装置
CN103731447A (zh) * 2012-10-11 2014-04-16 腾讯科技(深圳)有限公司 一种数据查询方法及系统
WO2014056356A1 (zh) * 2012-10-11 2014-04-17 腾讯科技(深圳)有限公司 一种数据查询方法、系统及存储介质
US20150213134A1 (en) * 2012-10-11 2015-07-30 Tencent Technology (Shenzhen) Company Limited Data query method and system and storage medium
CN104580276A (zh) * 2013-10-11 2015-04-29 深圳市腾讯计算机系统有限公司 信息推送方法、装置、系统及信息接入装置
CN105791436A (zh) * 2016-04-28 2016-07-20 杭州亿方云网络科技有限公司 一种文件同步系统及其同步方法
CN110191146A (zh) * 2019-03-21 2019-08-30 北京北信源软件股份有限公司 一种基于浏览器的文件远程调阅方法及系统
CN111193772A (zh) * 2019-12-05 2020-05-22 商客通尚景科技(上海)股份有限公司 文件下载方法及服务器
CN114095508A (zh) * 2020-07-31 2022-02-25 南京理工大学 一种同交换机下p2p传输的方法
CN112165515A (zh) * 2020-09-17 2021-01-01 国义招标股份有限公司 一种基于云端服务器的文件存储方法及系统
CN114338700A (zh) * 2021-12-23 2022-04-12 杭州星布智能科技有限公司 局域网点对点分布式存储方法

Similar Documents

Publication Publication Date Title
CN101325611A (zh) 一种点对点下载的方法及装置
KR100576935B1 (ko) 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법
US8316364B2 (en) Peer-to-peer software update distribution network
US7155487B2 (en) Method, system and article of manufacture for data distribution over a network
KR101322947B1 (ko) 네트워크에서의 파일의 분산 캐싱
CN102065136B (zh) 一种p2p网络安全数据传输方法及其系统
US8966107B2 (en) System and method of streaming data over a distributed infrastructure
US20060259523A1 (en) System and method of synchronization of internal data cache with wireless device application data repositories
CN112035422B (zh) 基于ipfs的分布式实时数据同步方法、节点设备及系统
Shang et al. Publish-subscribe communication in building management systems over named data networking
JP4954328B2 (ja) 通信ネットワークにおけるデータ管理のための方法およびシステム
Horozov et al. Moby-a mobile peer-to-peer service and data network
Serpanos et al. IoT System Architectures
KR20020003674A (ko) 데이타 동기화 시스템 및 그 방법
CN102510411A (zh) 一种用于阿瑞斯网络的缓存服务器的实现方法
Johnsen Pervasive web services discovery and invocation in military networks
Kelényi et al. Peer-to-peer file sharing for mobile devices
San Ting et al. A generic peer-to-peer network simulator
CN114095508A (zh) 一种同交换机下p2p传输的方法
Banerjee et al. The survey, research challenges, and opportunities in ICN
Leggieri et al. Interoperability of two RESTful protocols: HTTP and CoAP
Sofia An Overview on the Evolution of IoT Communication Approaches
KR20070015254A (ko) 무선 개방망에서 모바일 서비스를 위한 게이트웨이 시스템및 그 서비스 방법
Guan et al. Status-based content sharing mechanism for content-centric network
Ananthanarayanan et al. Enabling innovation below the communication api

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20081217