数据校验方法及服务器的制作方法

文档序号:7861159阅读:225来源:国知局
专利名称:数据校验方法及服务器的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及数据校验方法及服务器。
背景技术
私用跟踪器(英文为Private Tracker,缩写为PT)应用能够支持客户端利用比特流(英文为Bit Torrent,缩写为BT)协议进行高速下载,与普通的BT应用相比PT应用具有私密的小范围下载和进行流量统计的特点,为描述方便,本发明中将采用PT共享的资源称为PT资源。在共享PT资源时,可以由缓存服务器下载PT资源,并在下载完成后发布PT资源,后续客户端直接从缓存服务器上下载PT资源。通常,缓存服务器可以采用无种下载方式下载PT资源,并发布下载的PT资源。通常,PT资源按照分片数据的形式进行管理和共享,缓存服务器采用无种下载方 式从资源提供方下载PT资源,由于PT资源与BT资源不同,缓存服务器无法通过BT扩展协议,即元数据(英文为METADATA)协议获得PT资源的种子,因此无法在下载的同时利用种子中的内容哈希值对分片数据的正确性进行校验,从而导致下载得到的PT资源中可能存在错误的分片数据,即坏分片数据。缓存服务器发布存在坏分片数据的PT资源,会导致客户端无法下载到正确的PT资源;并且,当客户端从缓存服务器多次下载到坏分片数据时,客户端会停止从缓存服务器下载资源,并将缓存服务器拉入黑名单,从而降低缓存服务器的服务质量。

发明内容
本发明实施例中提供了数据校验方法及服务器,以解决现有技术中缓存服务器无法校验分片数据的正确性,从而导致缓存资源中存在坏分片数据时无法向用户提供服务的问题。为解决上述问题,本发明实施例提供的技术方案如下第一方面,提供一种数据校验方法,所述方法包括服务器向所连接的客户端发送所述客户端请求的PT资源的分片数据;记录所述客户端请求的分片数据的下载信息;当判断所述客户端异常断开与所述服务器的连接时,根据所述下载信息将未下载成功的分片数据确定为错误的分片数据。在第一方面的第一种可能的实现方式中,所述服务器向所连接的客户端发送所述客户端请求的PT资源的分片数据之前,还包括服务器向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识;接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述记录所述客户端请求的分片数据的下载信息包括记录所述客户端请求的分片数据被请求的次数。结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述记录所述客户端请求的分片数据的下载信息包括记录所述客户端请求的分片数据被请求的次数,并记录所述客户端请求的分片数据的请求结果,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述判断所述客户端异常断开与所述服务器的连接,包括 当所述客户端断开与所述服务器的连接时,判断是否接收到所述客户端发送的下载完成通知消息,所述下载完成通知消息为所述客户端成功下载请求的所有分片数据后向所述服务器返回的消息;当未接收到所述下载完成通知消息时,确定所述客户端异常断开与所述服务器的连接。结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,将所述下载信息中记录的未下载成功的分片数据确定为错误的分片数据,包括查找所述下载信息中每个分片数据的下载记录,所述下载记录中包括每个分片数据的请求次数,和/或请求结果;当所述下载记录中存在请求次数超过一次的分片数据时,确定所述分片数据为错误的分片数据;当所述下载记录中存在请求次数为一次,且所述请求结果为未完成的分片数据时,确定所述分片数据为错误分的分片数据。结合第一方面,或第一方面的第一种可能的实现方式,或第一方面的第二种可能的实现方式,或第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式,或第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括服务器删除所述错误的分片数据;当所述服务器上除所述删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端;重复执行所述服务器向所连接的客户端发送所述客户端请求的PT资源的分片数据的步骤,直至所述服务器上的所有分片数据均被客户端请求过。第二方面,提供一种服务器,所述服务器包括发送单元,用于向所连接的客户端发送所述客户端请求的PT资源的分片数据;记录单元,记录所述发送单元发送的所述客户端请求的分片数据的下载信息;判断单元,用于判断所述客户端是否异常断开与所述服务器的连接;确定单元,用于当所述判断单元判断所述客户端异常断开与所述服务器的连接时,根据所述记录单元记录的下载信息将未下载成功的分片数据确定为错误的分片数据。在第二方面的第一种可能的实现方式中,所述发送单元,还用于向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识;所述服务器还包括接收单元,用于接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述记录单元,具体用于记录所述客户端请求的分片数据被请求的次数,或者,记录所述客户端请求的分片数据被请求的次数,并记录所述客户端请求的分片数据的请求结 果,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述判断单元,具体用于当所述客户端断开与所述服务器的连接时,判断是否接收到所述客户端发送的下载完成通知消息,所述下载完成通知消息为所述客户端成功下载请求的所有分片数据后向所述服务器返回的消息;当未接收到所述下载完成通知消息时,确定所述客户端异常断开与所述服务器的连接。结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述确定单元,具体用于查找所述下载信息中每个分片数据的下载记录,所述下载记录中包括每个分片数据的请求次数,和/或请求结果;当所述下载记录中存在请求次数超过一次的分片数据时,确定所述分片数据为错误的分片数据;当所述下载记录中存在请求次数为一次,且所述请求结果为未完成的分片数据时,确定所述分片数据为错误分的分片数据。结合第二方面,或第二方面的第一种可能的实现方式,或第二方面的第二种可能的实现方式,或第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,还包括删除单元,用于删除所述确定单元确定的错误的分片数据;连接单元,用于当所述服务器上除所述删除单元删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端;执行单元,用于当所述连接单元连接客户端后,触发所述发送单元重复执行所述向所连接的客户端发送所述客户端请求的PT资源的分片数据,直至所述服务器上的所有分片数据均被客户端请求过。第三方面,提供一种服务器,所述服务器包括通信总线、网络接口、存储器和处理器,其中,所述通信总线,用于连接所述网络接口、存储器和处理器;所述网络接口,用于连接接入所述服务器的客户端;
所述存储器,用于保存PT资源的分片数据,以及分片数据的下载信息;所述处理器,用于通过所述网络接口向所连接的客户端发送所述客户端请求的PT资源的分片数据,将所述客户端请求的分片数据的下载信息记录到所述存储器,并且当判断所述客户端异常断开与所述服务器的连接时,根据所述存储器中保存的下载信息将未下载成功的分片数据确定为错误的分片数据。在第三方面的第一种可能的实现方式中,所述处理器,还用于通过所述网络接口向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识,以及接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。结合第三方面,或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述处理器,具体用于将所述客户端请求的分片数据被请求的次数记录到所述存储器,或者,将所述客户端请求的分片数据被请求的次数和所述客户端请求的分片数据的请求结果记录到所述存储器,其中所述分片数据的请求结果初始为未完成,当接收 到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。结合第三方面,或第三方面的第一种可能的实现方式,或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理器,还用于从所述存储器中删除所述错误的分片数据,以及当所述服务器上除所述删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端,重复执行所述向所连接的客户端发送所述客户端请求的PT资源的分片数据,直至所述服务器上的所有分片数据均被客户端请求过。本发明实施例中服务器向所连接的客户端发送所述客户端请求的分片数据,并记录所述客户端请求的分片数据的下载信息,当判断所述客户端异常断开与所述服务器的连接时,根据所述下载信息将未下载成功的分片数据确定为错误的分片数据。应用本发明实施例,由于客户端可以获得资源数据的哈希值,并利用资源数据的哈希值对分片数据进行校验,因此服务器可以在正式发布资源之前,通过与连接客户端之间的交互,利用客户端所请求分片数据是否下载成功的结果确定资源中存在的错误的分片数据,从而可以重新请求正确的分片数据或者删除错误的分片数据,以使所发布的资源中不存在错误的分片数据,保证客户端可以下载到正确的资源,提高服务器的服务质量。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明数据校验方法的一个实施例流程图;图2A为本发明数据校验方法的另一个实施例流程图;图2B为应用本发明实施例方法的缓存服务器与客户端之间的架构示意图;图3为本发明服务器的一个实施例框图4为本发明服务器的另一个实施例框图;图5为本发明服务器的另一个实施例框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,为本发明数据校验方法的一个实施例流程图,该实施例从服务器与所连接的一个客户端之间的交互描述数据校验的过程步骤101 :服务器向所连接的客户端发送所述客户端请求的PT资源的分片数据。
本发明实施例中,服务器抓取与BT协议相关的关键数据包以获取PT资源。例如,服务器通过抓取与BT协议相关的关键数据包的方式获取被发布的PT资源的信息以及请求过该PT资源的客户端的信息。服务器与请求过该PT资源的客户端建立连接以获取上述被发布的PT资源。具体的,服务器抓取用于获得PT资源的,包括资源哈希,即infoHash,值的,GET ANNOUNCE数据包,并抓取BT客户端发送的用于请求PT资源的BT HandShake数据包。然后,服务器通过分析抓取到的关键数据包,即GET ANNOUNCE数据包和BTHandShake数据包,建立infoHash与PEER的对应关系的列表。服务器可以进一步记录每个infoHash对应的PT资源被请求的次数,当某个PT资源的访问次数达到预设值时,服务器与列表中与该PT资源对应的PEER建立连接以获得该PT资源。在本实施例的一个实现方式中,服务器向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的所有分片数据的标识;服务器接收所述客户端根据所述分片数据列表发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端从所述分片数据列表中选择的分片数据的标识;服务器将与所述选择的分片数据的标识对应的分片数据发送给所述客户端。步骤102 :记录所述客户端请求的分片数据的下载信息。在本实施例的一个可选的实现方式中,所述客户端请求的分片数据的下载信息中包括客户端所请求的分片数据的请求次数,该请求次数的初始值为0,当服务器接收到所述客户端发送的分片数据请求消息后,将所述分片数据请求消息所请求的分片数据的请求次数加I。在本实施例的另一可选的实现方式中,所述客户端请求的分片数据的下载信息中包括客户端所请求的分片数据的请求次数和所述分片数据的请求结果;该请求次数的初始值为0,当服务器接收到所述客户端发送的分片数据请求消息后,将所述分片数据请求消息所请求的分片数据的请求次数加I;该请求结果初始为未完成,当服务器接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。步骤103 :当判断所述客户端异常断开与所述服务器的连接时,根据所述下载信息将未下载成功的分片数据确定为错误的分片数据。在本实施例的一个实现方式中,当服务器接收到客户端发送的断开连接消息时,服务器确定该客户端已经断开与该服务器的连接,此时服务器判断是否接收到所述客户端发送的下载完成通知消息,所述下载完成通知消息为所述客户端成功下载请求的所有分片数据后向所述服务器返回的消息,当服务器未接收到所述下载完成通知消息时,服务器确定所述客户端异常断开与所述服务器的连接。在上述步骤102中记录的所述客户端请求的分片数据的下载信息中包括客户端所请求的分片数据的请求次数的情况下,在服务器判断所述客户端异常断开与所述服务器的连接时,服务器查找记录的下载信息中每个分片数据的下载记录,所述下载记录中包括每个分片数据的请求次数,当所述下载记录中存在请求次数超过预定次数,例如一次,的分片数据时,确定所述分片数据为错误的分片数据;在上述步骤102中记录的所述客户端请求的分片数据的下载信息中包括客户端所请求的分片数据的请求次数以及所述分片数据的请求结果的情况下,当所述下载记录中存在请求次数超过预定次数,例如一次,且所述请求结果为未完成的分片数据时,服务器确定所述分片数据为错误的分片数据。本发明实施例中,需要下载PT资源的客户端可以获得PT资源的种子文件,通过该种子文件中的内容哈希值,可以校验所下载的PT资源的分片数据是否正确,因此服务器在获取到PT资源,并在向客户端正式发布该PT资源之前,可以采用上述实施例,通过与连接到服务器的客户端之间的交互,利用客户端所请求分片数据是否下载成功的结果确定PT 资源中存在的错误的分片数据,从而可以重新请求正确的分片数据或者删除错误的分片数据,以使所发布的资源中不存在错误的分片数据,保证客户端可以下载到正确的资源,提高服务器的服务质量。参见图2,为本发明数据校验方法的另一个实施例流程图,该实施例通过连接多个客户端以实现对缓存服务器上待发布资源的所有分片数据进行校验的详细过程步骤201 :缓存服务器通过无种方式获取待发布的资源后,进入资源校验模式。本实施例中,缓存服务器通过无种方式获取的资源可以具体为PT资源。本发明实施例中,服务器抓取与BT协议相关的关键数据包以获取PT资源。例如,服务器通过抓取与BT协议相关的关键数据包的方式获取被发布的PT资源的信息以及请求过该PT资源的客户端的信息。服务器与请求过该PT资源的客户端建立连接以获取上述被发布的PT资源。具体的,服务器抓取用于获得PT资源的,包括资源哈希,即infoHash,值的,GET ANNOUNCE数据包,并抓取BT客户端发送的用于请求PT资源的BT HandShake数据包。然后,服务器通过分析抓取到的关键数据包,即GET ANNOUNCE数据包和BT HandShake数据包,建立infoHash与PEER的对应关系的列表。服务器可以进一步记录每个infoHash对应的PT资源被请求的次数,当某个PT资源的访问次数达到预设值时,服务器与列表中与该PT资源对应的PEER建立连接以获得该PT资源。PT资源是按照分片数据的形式进行管理和共享的,例如,一个500MB的PT资源,每个分片数据大小为8MB,则该PT资源共有63个分片数据。在某个客户端发布PT资源之前,先为该PT资源建立种子文件,在建立种子文件时,需要计算PT资源中的每一个分片数据的内容哈希值,将所有分片数据各自的内容哈希值包含在种子文件中。除了分片数据的内容哈希值外,种子文件中通常还可以包括资源名称、分片数据的大小、分片数据的分片数量等;需要下载该PT资源的客户端可以获得PT资源的种子文件,通过该种子文件中的内容哈希值,可以校验所下载的PT资源的分片数据是否正确,例如,对于下载的一个分片数据,可以计算该分片数据的内容哈希值,如果该计算的内容哈希值与种子文件中包含的该分片数据的内容哈希值相同,则确定该分片数据下载正确,否则,该分片数据下载错误。
本发明实施例中,为了减少多个客户端同时从同一个客户端下载PT资源,导致对网络带宽的占用,可以由缓存服务器通过无种方式先从发布该PT资源的客户端获取该PT资源。通常,缓存服务器下载PT资源时,由于无法获得PT资源的种子文件,也就无法通过种子文件中的内容哈希值对所下载的PT资源的分片数据进行校验,因此本发明实施例中缓存服务器在向待下载PT资源的客户端正式发布PT资源之前,首先进入资源校验模式,由缓存服务器连接少量的客户端,利用这些客户端已经有的PT资源的种子文件,对该缓存服务器上缓存的PT资源中可能存在的错误的分片数据进行校验,以保证最终向连接到该缓存服务器的所有客户端所发布的PT资源中均为正确的分片数据。参见图2B,为应用本发明实施例方法的缓存服务器与客户端之间的架构示意图。步骤202 :缓存服务器连接客户端。
在资源校验模式下,缓存服务器可以连接一个客户端。缓存服务器也可以连接一个以上的客户端,缓存服务器与各个连接的客户端并行进行数据校验。以下以缓存服务器连接一个客户端为例说明本发明实施例的一个实现方式。步骤203 :缓存服务器向所连接的客户端发送所述客户端请求的分片数据。PT资源的资源提供方为组成PT资源的每个分片数据分配标识,当缓存服务器从资源提供方下载PT资源时,可以获得PT资源的每个分片数据的标识。当一个客户端连接缓存服务器后,缓存服务器可以向该客户端发送缓存的PT资源的分片数据列表,该分片数据列表中包含所有分片数据的标识,即分片数据号;客户端接收到分片数据列表后,可以根据自身需要请求该分片数据列表中包含的分片数据,在请求分片数据时,该客户端可以每一次从分片数据列表包含的分片数据的标识中选择一个分片数据的标识,将选择的分片数据的标识写入分片数据请求消息,并发送到服务器;服务器每接收到一个分片数据请求消息,按照该分片数据请求消息中包含的分片数据的标识,将获取到的与该分片数据的标识对应的分片数据发送给客户端。本实施例中,假设PT资源中包含十个分片数据,其标识分别表示为分片I、分片2、分片3、分片4、分片5、分片6、分片7、分片8、分片9、分片10。缓存服务器进入校验模式后,假设连接的第一个客户端请求其中的前三个分片数据,即分片I、分片2和分片3,则该客户端每一次从前三个分片数据的标识中选择一个标识写入到分片数据请求消息中。步骤204 :缓存服务器记录所述客户端请求的分片数据的下载信息。本步骤中,缓存服务器记录的下载信息的具体内容有所区别例如,有些客户端在校验通过分片数据请求消息所请求的分片数据错误后,可能会重复发送分片数据请求消息,因此缓存服务器可以根据分片数据请求消息的发送次数确定分片数据是否错误;具体操作时,在客户端通过发送分片数据请求消息请求分片数据的过程中,当缓存服务器接收到该客户端发送的分片数据请求消息后,将该分片数据请求消息所请求的分片数据的请求次数加I。又例如,有些客户端在校验通过分片数据请求消息所请求的分片数据正确后,会向缓存服务器发送对应该分片数据的完成消息,例如在BT协议中为have消息,而在校验分片数据错误后,不向缓存服务器返回任何消息,也不会重复发送分片数据请求消息,因此缓存服务器可以根据是否接收到完成消息确定分片数据是否正确;具体操作时,当缓存服务器接收到该客户端返回的请求分片数据成功的完成消息时,将该分片数据的请求结果设置为完成。其中,当缓存服务器接收到客户端针对某个分片数据首次发送的分片数据请求消息时,可以以该分片数据请求消息中包含的分片数据的标识为索引,为该分片数据建立下载信息的记录表项,通过该记录表项记录该分片数据的请求次数,或者通过该记录表项记录该分片数据的请求次数和请求结果。如下表I所示,为缓存服务器记录的第一个客户端所请求的前三个分片数据的下载信息表I
分片数据的标识请求次数请求结果分片IIhave
分片2
分片32上述表I仅为示例性描述,在实际应用中,缓存服务器每次连接的一个客户端可能仅属于上述示例的两种类型的客户端中的一种。步骤205 :当所述客户端断开与所述缓存服务器的连接时,判断是否接收到所述客户端发送的下载完成通知消息,若缓存服务器接收到所述客户端发送的下载完成通知消息,则执行步骤209 ;若缓存服务器未接收到所述客户端发送的下载完成通知消息,则跳转到步骤206。通常客户端如果在请求完所有分片数据,并确定这些分片数据均下载成功时,可以向缓存服务器发送一个下载完成通知消息,例如,在BT协议中该下载完成通知消息为uninterested消息。发送完下载完成通知消息后,客户端可以向缓存服务器发送一个断开连接报文,断开与缓存服务器的连接。当客户端在请求分片数据的过程中,如果发现请求到错误的分片数据,则也可以向缓存服务器发送一个断开连接报文,主动断开与缓存服务器的连接。缓存服务器接收到客户端发送的断开连接报文后,可以获知客户端已经断开与缓存服务器之间的连接,例如,当缓存服务器与客户端之间基于传输控制协议(英文为Transmission Control Protocol,缩写为TCP)建立连接时,该断开连接报文为FIN报文。因此,当客户端断开与缓存服务器的连接时,缓存服务器可以判断是否接收到该客户端发送的下载完成通知消息,如果接收到下载完成通知消息,则确定客户端是正常断开,且客户端已经请求完其所需的所有分片数据;如果未接收到下载完成通知消息,则确定客户端是异常断开,且客户端可能还未请求完其所需的所有分片数据。步骤206 :确定所述客户端异常断开与所述缓存服务器的连接,根据所述下载信息将未下载成功的分片数据确定为错误的分片数据。仍然以缓存服务器连接的第一个客户端为例,结合前述表I可知,当缓存服务器确定该客户端异常断开与该缓存服务器的连接后,缓存服务器查找表I记录的下载信息,例如,可以先查找请求次数的记录,获取其中分片3对应的第三个分片数据被请求过两次,则确定第三个分片数据为错误的分片数据;然后可以查找请求结果的记录,获取其中分片2对应的第二个分片数据的请求次数为1,但是未返回“have”消息,则确定第二个分片数据为错误的分片数据。本实施例示出了第一个客户端请求过其所需要的所有分片数据后,才异常断开与缓存服务器的连接,实际应用中,某个客户端可能在未请求完所需要的所有分片数据前,当请求到某个错误的分片数据时就断开与缓存服务器的连接,对此本发明实施例不进行限制。步骤207 :缓存服务器删除所述错误的分片数据。由前述步骤描述的过程,缓存服务器通过连接的一个客户端,可以识别出该客户端在异常断开时,已经请求过的分片数据中包含的错误的分片数据,因此缓存服务器可以删除这些错误的分片数据。在删除错误的分片数据后,可以重新下载这些分片数据,并通过后续连接的客户端对这些分片数据及还未请求过的分片数据进行校验。步骤208 :判断除所述删除的分片数据外的剩余的分片数据中,是否有未被客户 端请求过的分片数据,若有未被客户端请求过的分片数据,则返回步骤202 ;若没有未被客户端请求过的分片数据,则结束当前流程。仍然以缓存服务器连接的第一个客户端为例,结合前述表I的校验结果,当该客户端请求完三个分片数据后,缓存服务器上还有七个分片数据未被校验,因此缓存服务器可以通过连接下一个客户端,对未被校验过的分片数据进行校验,直至该缓存服务器上所有的分片数据均被校验过。本步骤中,缓存服务器在本次资源校验模式下的所有分片数据均被客户端请求过后,则结束本次资源校验模式下的校验流程,后续缓存服务器可以重新下载已经被删除的分片数据,并重新开启下一次的资源校验模式,下一次资源校验模式下的校验过程与本实施例的过程一致,在此不再赘述,直到缓存服务器上缓存的所有分片数据均正确,则缓存服务器可以结束资源校验模式,向客户端发布由正确的分片数据组成的PT资源。步骤209 :判断是否有未被客户端请求过的分片数据,若有未被客户端请求过的分片数据,则返回步骤202 ;若没有未被客户端请求过的分片数据,则结束当前流程。当接收到客户端发送的下载完成通知消息后,确定客户端请求的所有分片数据均下载成功,因此缓存服务器判断除了已经下载成功的分片数据外,是否还存在未被客户端请求过的分片数据,如果仍存在未被客户端请求过的分片数据,则可以通过连接下一个客户端对剩余的分片数据进行校验,直至该缓存服务器上所有的分片数据均被校验过。由上述实施例可见,本发明实施例中,需要下载PT资源的客户端可以获得PT资源的种子文件,通过该种子文件中的内容哈希值,可以校验所下载的PT资源的分片数据是否正确,因此服务器在获取到PT资源,并在向客户端正式发布该PT资源之前,可以采用上述实施例,通过与连接到服务器的客户端之间的交互,利用客户端所请求分片数据是否下载成功的结果确定PT资源中存在的错误的分片数据,从而可以重新请求正确的分片数据或者删除错误的分片数据,以使所发布的资源中不存在错误的分片数据,保证客户端可以下载到正确的资源,提高服务器的服务质量。与本发明数据校验方法的实施例相对应,本发明还提供了用于执行该方法的服务器的实施例。参见图3,为本发明服务器的一个实施例框图
该服务器包括发送单元310、记录单元320、判断单元330和确定单元340。其中,发送单元310,用于向所连接的客户端发送所述客户端请求的PT资源的分片数据;记录单元320,用于记录所述发送单元310发送的所述客户端请求的分片数据的下载信息;判断单元330,用于判断所述客户端是否异常断开与所述服务器的连接;确定单元340,用于当所述判断单元330判断所述客户端异常断开与所述服务器的连接时,根据所述记录单元320记录的下载信息将未下载成功的分片数据确定为错误的分片数据。参见图4,为本发明服务器的另一个实施例框图 该服务器包括发送单元410、接收单元420、记录单元430、判断单元440、确定单元450、删除单元460、连接单元470和执行单元480。其中,发送单元410,用于向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识;接收单元420,用于接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识;所述发送单元410,还用于向所连接的客户端发送所述客户端请求的PT资源的分片数据;记录单元430,记录所述发送单元410发送的所述客户端请求的分片数据的下载
信息;判断单元440,用于判断所述客户端是否异常断开与所述服务器的连接;确定单元450,用于当所述判断单元440判断所述客户端异常断开与所述服务器的连接时,根据所述记录单元430记录的下载信息将未下载成功的分片数据确定为错误的分片数据。删除单元460,用于删除所述确定单元450确定的错误的分片数据;连接单元470,用于当所述服务器上除所述删除单元460删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端;执行单元480,用于当所述连接单元470连接客户端后,触发所述发送单元410重复执行所述向所连接的客户端发送所述客户端请求的PT资源的分片数据,直至所述服务器上的所有分片数据均被客户端请求过。在本实施例的一个实现方式中,所述记录单元430,具体用于记录所述客户端请求的分片数据被请求的次数,或者,记录所述客户端请求的分片数据被请求的次数,并记录所述客户端请求的分片数据的请求结果,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。在本实施例的另一个实现方式中,所述判断单元440,具体用于当所述客户端断开与所述服务器的连接时,判断是否接收到所述客户端发送的下载完成通知消息,所述下载完成通知消息为所述客户端成功下载请求的所有分片数据后向所述服务器返回的消息;当未接收到所述下载完成通知消息时,确定所述客户端异常断开与所述服务器的连接。
在本实施例的另一个实现方式中,所述确定单元450,具体用于查找所述下载信息中每个分片数据的下载记录,所述下载记录中包括每个分片数据的请求次数,和/或请求结果;当所述下载记录中存在请求次数超过一次的分片数据时,确定所述分片数据为错误的分片数据;当所述下载记录中存在请求次数为一次,且所述请求结果为未完成的分片数据时,确定所述分片数据为错误分的分片数据。参见图5,为本发明服务器的另一个实施例框图该服务器包括通信总线510、网络接口 520、存储器530和处理器540。其中,所述通信总线510,用于连接所述网络接口 520、存储器530和处理器540 ;所述网络接口 520,用于连接接入所述服务器的客户端;所述存储器530,用于保存PT资源的分片数据,以及分片数据的下载信息;
所述处理器540,用于通过所述网络接口 510向所连接的客户端发送所述客户端请求的PT资源的分片数据,将所述客户端请求的分片数据的下载信息记录到所述存储器530,并且当判断所述客户端异常断开与所述服务器的连接时,根据所述存储器530中保存的下载信息将未下载成功的分片数据确定为错误的分片数据。在本实施例的一个实现方式中,所述处理器540,还用于通过所述网络接口向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识,以及接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。在本实施例的另一个实现方式中,所述处理器540,具体用于将所述客户端请求的分片数据被请求的次数记录到所述存储器,或者,将所述客户端请求的分片数据被请求的次数和所述客户端请求的分片数据的请求结果记录到所述存储器,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。在本实施例的另一个实现方式中,所述处理器540,还用于从所述存储器中删除所述错误的分片数据,以及当所述服务器上除所述删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端,重复执行所述向所连接的客户端发送所述客户端请求的PT资源的分片数据,直至所述服务器上的所有分片数据均被客户端请求过。由上述实施例可见,本发明实施例中服务器向所连接的客户端发送所述客户端请求的分片数据,并记录所述客户端请求的分片数据的下载信息,当判断所述客户端异常断开与所述服务器的连接时,根据所述下载信息将未下载成功的分片数据确定为错误的分片数据。应用本发明实施例,由于客户端可以获得资源数据的哈希值,并利用资源数据的哈希值对分片数据进行校验,因此服务器可以在正式发布资源之前,通过与连接客户端之间的交互,利用客户端所请求分片数据是否下载成功的结果确定资源中存在的错误的分片数据,从而可以重新请求正确的分片数据或者删除错误的分片数据,以使所发布的资源中不存在错误的分片数据,保证客户端可以下载到正确的资源,提高服务器的服务质量。本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的保护范围之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据校验方法,其特征在于,所述方法包括 服务器向所连接的客户端发送所述客户端请求的私用跟踪器PT资源的分片数据; 记录所述客户端请求的分片数据的下载信息; 当判断所述客户端异常断开与所述服务器的连接时,根据所述下载信息将未下载成功的分片数据确定为错误的分片数据。
2.根据权利要求I所述的方法,其特征在于,所述服务器向所连接的客户端发送所述客户端请求的PT资源的分片数据之前,还包括 服务器向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识; 接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。
3.根据权利要求I或2所述的方法,其特征在于,所述记录所述客户端请求的分片数据的下载信息包括 记录所述客户端请求的分片数据被请求的次数。
4.根据权利要求I或2所述的方法,其特征在于,所述记录所述客户端请求的分片数据的下载信息包括 记录所述客户端请求的分片数据被请求的次数,并记录所述客户端请求的分片数据的请求结果,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。
5.根据权利要求I至4任意一项所述的方法,其特征在于,所述判断所述客户端异常断开与所述服务器的连接,包括 当所述客户端断开与所述服务器的连接时,判断是否接收到所述客户端发送的下载完成通知消息,所述下载完成通知消息为所述客户端成功下载请求的所有分片数据后向所述服务器返回的消息; 当未接收到所述下载完成通知消息时,确定所述客户端异常断开与所述服务器的连接。
6.根据权利要求I至5任意一项所述的方法,其特征在于,将所述下载信息中记录的未下载成功的分片数据确定为错误的分片数据,包括 查找所述下载信息中每个分片数据的下载记录,所述下载记录中包括每个分片数据的请求次数,和/或请求结果; 当所述下载记录中存在请求次数超过一次的分片数据时,确定所述分片数据为错误的分片数据; 当所述下载记录中存在请求次数为一次,且所述请求结果为未完成的分片数据时,确定所述分片数据为错误分的分片数据。
7.根据权利要求I至6任意一项所述的方法,其特征在于,所述方法还包括 服务器删除所述错误的分片数据; 当所述服务器上除所述删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端; 重复执行所述服务器向所连接的客户端发送所述客户端请求的PT资源的分片数据的步骤,直至所述服务器上的所有分片数据均被客户端请求过。
8.一种服务器,其特征在于,所述服务器包括 发送单元,用于向所连接的客户端发送所述客户端请求的PT资源的分片数据; 记录单元,用于记录所述发送单元发送的所述客户端请求的分片数据的下载信息; 判断单元,用于判断所述客户端是否异常断开与所述服务器的连接; 确定单元,用于当所述判断单元判断所述客户端异常断开与所述服务器的连接时,根据所述记录单元记录的下载信息将未下载成功的分片数据确定为错误的分片数据。
9.根据权利要求8所述的服务器,其特征在于, 所述发送单元,还用于向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识; 所述服务器还包括 接收单元,用于接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。
10.根据权利要求8或9所述的服务器,其特征在于, 所述记录单元,具体用于记录所述客户端请求的分片数据被请求的次数,或者,记录所述客户端请求的分片数据被请求的次数,并记录所述客户端请求的分片数据的请求结果,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。
11.根据权利要求8至10任意一项所述的服务器,其特征在于, 所述判断单元,具体用于当所述客户端断开与所述服务器的连接时,判断是否接收到所述客户端发送的下载完成通知消息,所述下载完成通知消息为所述客户端成功下载请求的所有分片数据后向所述服务器返回的消息;当未接收到所述下载完成通知消息时,确定所述客户端异常断开与所述服务器的连接。
12.根据权利要求8至11任意一项所述的服务器,其特征在于, 所述确定单元,具体用于查找所述下载信息中每个分片数据的下载记录,所述下载记录中包括每个分片数据的请求次数,和/或请求结果;当所述下载记录中存在请求次数超过一次的分片数据时,确定所述分片数据为错误的分片数据;当所述下载记录中存在请求次数为一次,且所述请求结果为未完成的分片数据时,确定所述分片数据为错误分的分片数据。
13.根据权利要求8至12任意一项所述的服务器,其特征在于,还包括 删除单元,用于删除所述确定单元确定的错误的分片数据; 连接单元,用于当所述服务器上除所述删除单元删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端; 执行单元,用于当所述连接单元连接客户端后,触发所述发送单元重复执行所述向所连接的客户端发送所述客户端请求的PT资源的分片数据,直至所述服务器上的所有分片数据均被客户端请求过。
14.一种服务器,其特征在于,所述服务器包括通信总线、网络接口、存储器和处理器,其中, 所述通信总线,用于连接所述网络接口、存储器和处理器;所述网络接口,用于连接接入所述服务器的客户端; 所述存储器,用于保存PT资源的分片数据,以及分片数据的下载信息; 所述处理器,用于通过所述网络接口向所连接的客户端发送所述客户端请求的PT资源的分片数据,将所述客户端请求的分片数据的下载信息记录到所述存储器,并且当判断所述客户端异常断开与所述服务器的连接时,根据所述存储器中保存的下载信息将未下载成功的分片数据确定为错误的分片数据。
15.根据权利要求14所述的服务器,其特征在于, 所述处理器,还用于通过所述网络接口向所述连接的客户端发送分片数据列表,所述分片数据列表中包含所述服务器上缓存的分片数据的标识,以及接收所述客户端发送的分片数据请求消息,所述分片数据请求消息中包含所述客户端请求的分片数据的标识。
16.根据权利要求14或15所述的服务器,其特征在于, 所述处理器,具体用于将所述客户端请求的分片数据被请求的次数记录到所述存储器,或者,将所述客户端请求的分片数据被请求的次数和所述客户端请求的分片数据的请求结果记录到所述存储器,其中所述分片数据的请求结果初始为未完成,当接收到所述客户端返回的请求分片数据成功的完成消息时,将所述分片数据的请求结果设置为完成。
17.根据权利要求14至16任意一项所述的服务器,其特征在于, 所述处理器,还用于从所述存储器中删除所述错误的分片数据,以及当所述服务器上除所述删除的分片数据外的剩余的分片数据中,有未被客户端请求过的分片数据时,连接下一个客户端,重复执行所述向所连接的客户端发送所述客户端请求的PT资源的分片数据,直至所述服务器上的所有分片数据均被客户端请求过。
全文摘要
本发明公开了数据校验方法及服务器,该方法包括服务器向所连接的客户端发送该客户端请求的PT资源的分片数据;记录该客户端请求的分片数据的下载信息;当判断该客户端异常断开与服务器的连接时,根据下载信息将未下载成功的分片数据确定为错误的分片数据。本发明中服务器可以在正式发布资源之前,通过与连接客户端之间的交互,利用客户端所请求分片数据是否下载成功的结果确定资源中存在的错误的分片数据,从而可以重新请求正确的分片数据或者删除错误的分片数据,以使所发布的资源中不存在错误的分片数据,保证客户端可以下载到正确的资源,提高服务器的服务质量。
文档编号H04L1/00GK102882961SQ201210356580
公开日2013年1月16日 申请日期2012年9月24日 优先权日2012年9月24日
发明者谢羽 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1