具体实施方式
本发明实施例中,当一个客户端向第二客户端传输数据时,由其它设备向所述第二客户端传输数据,实现多个数据源向一个设备提供数据,提高了传输数据的效率。其它设备可以是客户端和/或服务器。
参见图2,本实施例中的系统包括客户端201、第一服务器202(本实施例称索引服务器202)和路由器203。本实施例中的客户端201在一个应用场景中分为第一客户端和第二客户端,对于物理设备实体来说,第一客户端和第二客户端可以是同一客户端201。
客户端201作为第一客户端时,用于在需要向第二客户端传输文件的内容数据时,发送所述文件的描述信息。第一客户端可以直接与索引服务器202和第二客户端建立连接,也可通过路由器203进行连接,或者第一客户端通过系统中的路由穿透服务器204(参见图3所示)向第二客户端发送传输数据的请求消息,以及向索引服务器202发送所述文件的描述信息,由路由穿透服务器204将所述文件的描述信息转发给第二客户端或索引服务器202。以及,当第二客户端开始从其它设备获得文件的内容数据时,第一客户端中止向第二客户端传输文件的内容数据的操作。第一客户端通过路由穿透服务器204发送文件的描述信息和请求消息,而不通过路由穿透服务器204传输文件的内容数据,这种方式主要应用在即时通信系统中。
索引服务器202用于根据所述文件的描述信息确定存有所述文件的设备,可以通知所述第二客户端从确定的设备获得所述文件的内容数据。索引服务器202从所述第二客户端或路由穿透服务器204处获得第一客户端发送的文件的描述信息。当所述第二客户端开始接收文件的内容数据时,索引服务器202还用于将所述第二客户端确定为存有所述文件的设备,为其它客户端传输所述文件时提供方便,以及当所述第二客户端退出网络或退出接收数据时使用的下载软件时,本实施例中称所述第二客户端处于离线状态时,将所述第二客户端确定为未有所述文件的设备。
客户端201作为第二客户端时,用于从确定的设备获得所述文件的内容数据。具体方式如,第二客户端根据索引服务器202的通知获得确定的设备的设备信息,连接到相应的设备并获得所述文件;或者,第二客户端收到第一客户端的请求消息后,定期访问索引服务器202,从而获得确定的设备的设备信息。
其中,所述文件的描述信息包括文件名和/或文件的内容签名。第一客户端需要发送内容签名时,预先根据预设的算法对文件的内容数据进行计算后获得内容签名。本实施例中的算法包括对不同的数据处理得到不同的处理结果的所有算法,处理结果(即内容签名)可唯一标识处理前的数据即可,如信息-摘要算法5(MD5)和安全哈希算法(Safe-Hash Algorithm,SHA)等。获得所需的内容签名可以有多种方式,如对文件的全部内容数据进行处理获得所需的内容签名;如将文件的全部内容数据分为多个数据段,分别对各数据段进行处理得到多个内容签名,再将该多个内容签名合并为所需的内容签名;如将前一例子中的多个内容签名合并后,进一步根据算法进行处理,得到所需的内容签名;如从文件的内容数据中选择部分内容数据,对该部分内容数据进行处理后得到所需的内容签名;如将前一例子中的部分内容数据分为多个数据段,分别对各数据段进行处理得到多个内容签名,再将该多个内容签名合并为所需的内容签名等方式。
路由穿透服务器204用于转发第一客户端发送的用于请求所述第二客户端接收文件的内容数据的消息,以及向所述第二客户端或索引服务器202发送所述文件的描述信息。
参见图4,本实施例中的第一客户端包括第一接口模块401、第二接口模块402和控制模块403。
第一接口模块401用于与客户端(特别是本实施例中所述的第二客户端)进行交互,应用UDP协议。
第二接口模块402用于与服务器(特别是本实施例中的路由穿透服务器204)进行交互,应用传输控制协议(Transmission Control Protocol,TCP)协议。
控制模块403用于当第一接口模块401需要向第二客户端发送文件的内容数据时指示第二接口模块402向路由穿透服务器204发送所述文件的描述信息。控制模块403还可阻止第一接口模块401的发送所述文件的内容数据的操作。
当第一客户端中的第二接口模块402需要发送文件的内容签名时,第一客户端还包括计算模块404,参见图5所示,该计算模块404用于根据预设的算法对文件的内容数据进行计算,并获得文件的内容签名。
第一客户端还可以包括用于存储文件的内容数据的存储模块,本图未示出。
参见图6,本实施例中的索引服务器202包括接口模块601和处理模块602。
接口模块601用于与客户端和服务器建立连接,从所述第二客户端或路由穿透服务器204处获得第一客户端发送的文件的描述信息。
处理模块602用于根据所述文件的描述信息确定存有所述文件的设备,可以主动通过接口模块601通知所述第二客户端从确定的设备获得所述文件的内容数据,或者通过接口模块601收到第二客户端定期发送的访问请求后,通知所述第二客户端从确定的设备获得所述文件的内容数据。处理模块602还用于在所述第二客户端开始接收文件的内容数据时,将所述第二客户端确定为存有所述文件的设备,以及当所述第二客户端处于离线状态时,将所述第二客户端确定为未有所述文件的设备。
当接口模块601收到第一客户端发送的文件的内容数据时,索引服务器202还包括计算模块,本图未示出,该计算模块用于根据预设的算法对内容数据计算后得到文件的内容签名。由处理模块602根据内容签名确定存有所述文件的设备。获得内容签名的方法参见介绍系统时关于计算内容数据的描述。
其中,可对处理模块602进一步细化,其包括查找模块603或遍历模块604。
查找模块603用于根据所述文件的描述信息查找文件的描述信息与设备信息的对应关系,并根据查找到的设备信息确定存有所述文件的设备。设备信息包括设备标识、IP地址和URL地址等。其中,文件的描述信息与设备信息的对应关系可以存于查找模块603本地,也可存于索引服务器202中的存储模块,或者通过一独立的服务器进行存储。该对应关系可以通过遍历模块604的查找结果而建立,或者通过接口模块601接收而直接获得。一个对应关系的实例如下:
表1
文件内容签名 |
设备标识 |
设备地址信息 |
设备在线状态 |
0EFBFDA2212.... |
00FF32FD21... |
210.35.247.1:500 |
在线 |
0EFBFDA2212.... |
FE00322D21... |
210.35.247.2:600 |
在线 |
0EEFDA2875..... |
FEBA322D21... |
210.35.247.3:600 |
离线 |
其中,设备的在线状态主要针对客户端而言,可以认为服务器始终处于在线。
遍历模块604用于根据所述文件的描述信息查找通信网络内设备中的文件,并确定存有所述文件的设备。
处理模块602还包括处理子模块,本图未示出,处理子模块用于实现处理模块602中查找模块603和遍历模块604完成以外的功能。
以上是对系统和装置的描述,通过以上描述对客户端间传输数据的过程有所了解,下面主要介绍传输数据的方法,参见图7所示,主要方法流程如下:
步骤701:第一客户端在需要向第二客户端传输文件的内容数据时,向第二客户端发送传输数据的请求消息,以及发送所述文件的描述信息。
步骤702:索引服务器202根据所述文件的描述信息确定存有所述文件的设备。
步骤703:第二客户端从确定的设备获得所述文件的内容数据。
当第二客户端开始从其它设备接收文件的内容数据时,第一客户端中止向第二客户端传输数据的操作。
下面以即时通信系统这一应用场景为例,对客户端间传输数据的方法进行详细说明,参见图8,具体实现流程如下:
步骤801:第一客户端通过路由器203接入网络,以及进一步通过路由穿透服务器204向第二客户端发送传输文件的内容数据的请求消息。
步骤802:第一客户端向路由穿透服务器204发送所述文件的描述信息。
在步骤801和802中,对于用户而言,其只进行了传输数据的操作,是第一客户端中的即时通信系统自动完成上述步骤。
步骤803:路由穿透服务器204直接将所述文件的描述信息转发给索引服务器202。或者,路由穿透服务器204将所述文件的描述信息转发给所述第二客户端,由所述第二客户端将所述文件的描述信息发送给索引服务器202。
步骤804:索引服务器202根据所述文件的描述信息确定存有所述文件的设备,特别是通过查找本地保存的文件的描述信息与设备信息的对应关系确定存有所述文件的设备,并将查找到的设备信息发送给所述第二客户端。
索引服务器202可以主动发送设备信息,或者收到第二客户端的访问请求后发送设备信息。
步骤805:所述第二客户端根据设备信息与相应的设备建立连接,并获得所述文件的内容数据。其中,所述第二客户端可以采用TCP协议与相应的设备建立连接。
获得所述文件的内容数据的具体方式有多种,如所述第二客户端向相应的设备发送请求获得所述文件的消息,由连接到的设备将其发送给所述第二客户端。或者,如所述第二客户端直接访问相应的设备,从连接到的设备上复制一份所述文件并返回给本地。
步骤806:索引服务器202将所述第二客户端确定为存有所述文件的设备,将其设备信息记录到保存的对应关系中。具体实现方式可以是索引服务器202主动记录,也可以是所述第二客户端登录到索引服务器202进行注册,上报自身的设备信息。
索引服务器202可以通过监控所述第二客户端或者通过所述第二客户端的上报,获知所述第二客户端开始获得所述文件的内容数据,可即时进行记录(或称注册)。
步骤807:索引服务器202查找到除第一客户端以外的设备正在向所述第二客户端传输数据时,通知第一客户端可以中止操作。
步骤808:第一客户端向用户输出提示消息,如“对方正在从其它设备获得数据,您可以选择中止操作,或选择继续传输。”,根据用户的指示,即点击“中止”的操作,中止向所述第二客户端传输数据的操作。如果用户点击“继 续”,则向所述第二客户端传输数据,该传输数据的过程可能从此步骤开始,与步骤805同步,该过程也可以在步骤805后执行。
也可以不提示用户,由第一客户端通过监控所述第二客户端或者通过所述第二客户端发送的消息获知所述第二客户端正在从其它设备上获得所述文件,可直接中止传输数据。
步骤809:当所述第二客户端变为“离线”状态,即退出即时通信系统时,索引服务器202将所述第二客户端确定为未存有所述文件的设备。
用于实现本实施例的软件可以存储于硬盘、磁带和闪存等存储介质。
本发明实施例在两个客户端之间需要传输数据时,由其它设备向数据的接收方传输数据,实现了多个数据源同时提供数据,提高了数据传输的效率。以及,由于所述两个客户端之间不需要传输完整的文件,文件的部分数据由其它设备提供,所以减少了所述两个客户端之间由于UDP协议、路由器和防火墙等因素带来的问题。本发明实施例在所述第二客户端从其它设备接收所述文件的内容数据时,可中止客户端的数据输出,相当于两个客户端之间从未建立数据传输的直接连接,避免了UDP协议带来的问题。并且,本发明实施例根据所述第二客户端的在线状态直接更新文件与设备信息的对应关系,便于在其它设备需要获得与所述第二客户端接收相同的文件的内容数据时,向该其它设备提供较多的设备。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。