專利名稱:數(shù)據(jù)校驗方法及服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及數(shù)據(jù)校驗方法及服務(wù)器。
背景技術(shù):
私用跟蹤器(英文為Private Tracker,縮寫為PT)應(yīng)用能夠支持客戶端利用比特流(英文為Bit Torrent,縮寫為BT)協(xié)議進行高速下載,與普通的BT應(yīng)用相比PT應(yīng)用具有私密的小范圍下載和進行流量統(tǒng)計的特點,為描述方便,本發(fā)明中將采用PT共享的資源稱為PT資源。在共享PT資源時,可以由緩存服務(wù)器下載PT資源,并在下載完成后發(fā)布PT資源,后續(xù)客戶端直接從緩存服務(wù)器上下載PT資源。通常,緩存服務(wù)器可以采用無種下載方式下載PT資源,并發(fā)布下載的PT資源。通常,PT資源按照分片數(shù)據(jù)的形式進行管理和共享,緩存服務(wù)器采用無種下載方 式從資源提供方下載PT資源,由于PT資源與BT資源不同,緩存服務(wù)器無法通過BT擴展協(xié)議,即元數(shù)據(jù)(英文為METADATA)協(xié)議獲得PT資源的種子,因此無法在下載的同時利用種子中的內(nèi)容哈希值對分片數(shù)據(jù)的正確性進行校驗,從而導(dǎo)致下載得到的PT資源中可能存在錯誤的分片數(shù)據(jù),即壞分片數(shù)據(jù)。緩存服務(wù)器發(fā)布存在壞分片數(shù)據(jù)的PT資源,會導(dǎo)致客戶端無法下載到正確的PT資源;并且,當客戶端從緩存服務(wù)器多次下載到壞分片數(shù)據(jù)時,客戶端會停止從緩存服務(wù)器下載資源,并將緩存服務(wù)器拉入黑名單,從而降低緩存服務(wù)器的服務(wù)質(zhì)量。
發(fā)明內(nèi)容
本發(fā)明實施例中提供了數(shù)據(jù)校驗方法及服務(wù)器,以解決現(xiàn)有技術(shù)中緩存服務(wù)器無法校驗分片數(shù)據(jù)的正確性,從而導(dǎo)致緩存資源中存在壞分片數(shù)據(jù)時無法向用戶提供服務(wù)的問題。為解決上述問題,本發(fā)明實施例提供的技術(shù)方案如下第一方面,提供一種數(shù)據(jù)校驗方法,所述方法包括服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù);記錄所述客戶端請求的分片數(shù)據(jù)的下載信息;當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。在第一方面的第一種可能的實現(xiàn)方式中,所述服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù)之前,還包括服務(wù)器向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識;接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述記錄所述客戶端請求的分片數(shù)據(jù)的下載信息包括記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)。結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述記錄所述客戶端請求的分片數(shù)據(jù)的下載信息包括記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),并記錄所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能的實現(xiàn)方式,或第一方面的第三種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述判斷所述客戶端異常斷開與所述服務(wù)器的連接,包括 當所述客戶端斷開與所述服務(wù)器的連接時,判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,所述下載完成通知消息為所述客戶端成功下載請求的所有分片數(shù)據(jù)后向所述服務(wù)器返回的消息;當未接收到所述下載完成通知消息時,確定所述客戶端異常斷開與所述服務(wù)器的連接。結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能的實現(xiàn)方式,或第一方面的第三種可能的實現(xiàn)方式,或第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,將所述下載信息中記錄的未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù),包括查找所述下載信息中每個分片數(shù)據(jù)的下載記錄,所述下載記錄中包括每個分片數(shù)據(jù)的請求次數(shù),和/或請求結(jié)果;當所述下載記錄中存在請求次數(shù)超過一次的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù);當所述下載記錄中存在請求次數(shù)為一次,且所述請求結(jié)果為未完成的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤分的分片數(shù)據(jù)。結(jié)合第一方面,或第一方面的第一種可能的實現(xiàn)方式,或第一方面的第二種可能的實現(xiàn)方式,或第一方面的第三種可能的實現(xiàn)方式,或第一方面的第四種可能的實現(xiàn)方式,或第一方面的第五種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,所述方法還包括服務(wù)器刪除所述錯誤的分片數(shù)據(jù);當所述服務(wù)器上除所述刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端;重復(fù)執(zhí)行所述服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù)的步驟,直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。第二方面,提供一種服務(wù)器,所述服務(wù)器包括發(fā)送單元,用于向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù);記錄單元,記錄所述發(fā)送單元發(fā)送的所述客戶端請求的分片數(shù)據(jù)的下載信息;判斷單元,用于判斷所述客戶端是否異常斷開與所述服務(wù)器的連接;確定單元,用于當所述判斷單元判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述記錄單元記錄的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。在第二方面的第一種可能的實現(xiàn)方式中,所述發(fā)送單元,還用于向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識;所述服務(wù)器還包括接收單元,用于接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述記錄單元,具體用于記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),或者,記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),并記錄所述客戶端請求的分片數(shù)據(jù)的請求結(jié) 果,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,或第二方面的第二種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述判斷單元,具體用于當所述客戶端斷開與所述服務(wù)器的連接時,判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,所述下載完成通知消息為所述客戶端成功下載請求的所有分片數(shù)據(jù)后向所述服務(wù)器返回的消息;當未接收到所述下載完成通知消息時,確定所述客戶端異常斷開與所述服務(wù)器的連接。結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,或第二方面的第二種可能的實現(xiàn)方式,或第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述確定單元,具體用于查找所述下載信息中每個分片數(shù)據(jù)的下載記錄,所述下載記錄中包括每個分片數(shù)據(jù)的請求次數(shù),和/或請求結(jié)果;當所述下載記錄中存在請求次數(shù)超過一次的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù);當所述下載記錄中存在請求次數(shù)為一次,且所述請求結(jié)果為未完成的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤分的分片數(shù)據(jù)。結(jié)合第二方面,或第二方面的第一種可能的實現(xiàn)方式,或第二方面的第二種可能的實現(xiàn)方式,或第二方面的第三種可能的實現(xiàn)方式,或第二方面的第四種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,還包括刪除單元,用于刪除所述確定單元確定的錯誤的分片數(shù)據(jù);連接單元,用于當所述服務(wù)器上除所述刪除單元刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端;執(zhí)行單元,用于當所述連接單元連接客戶端后,觸發(fā)所述發(fā)送單元重復(fù)執(zhí)行所述向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。第三方面,提供一種服務(wù)器,所述服務(wù)器包括通信總線、網(wǎng)絡(luò)接口、存儲器和處理器,其中,所述通信總線,用于連接所述網(wǎng)絡(luò)接口、存儲器和處理器;所述網(wǎng)絡(luò)接口,用于連接接入所述服務(wù)器的客戶端;
所述存儲器,用于保存PT資源的分片數(shù)據(jù),以及分片數(shù)據(jù)的下載信息;所述處理器,用于通過所述網(wǎng)絡(luò)接口向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),將所述客戶端請求的分片數(shù)據(jù)的下載信息記錄到所述存儲器,并且當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述存儲器中保存的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。在第三方面的第一種可能的實現(xiàn)方式中,所述處理器,還用于通過所述網(wǎng)絡(luò)接口向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識,以及接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,所述處理器,具體用于將所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)記錄到所述存儲器,或者,將所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)和所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果記錄到所述存儲器,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收 到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。結(jié)合第三方面,或第三方面的第一種可能的實現(xiàn)方式,或第三方面的第二種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,所述處理器,還用于從所述存儲器中刪除所述錯誤的分片數(shù)據(jù),以及當所述服務(wù)器上除所述刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端,重復(fù)執(zhí)行所述向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。本發(fā)明實施例中服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的分片數(shù)據(jù),并記錄所述客戶端請求的分片數(shù)據(jù)的下載信息,當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。應(yīng)用本發(fā)明實施例,由于客戶端可以獲得資源數(shù)據(jù)的哈希值,并利用資源數(shù)據(jù)的哈希值對分片數(shù)據(jù)進行校驗,因此服務(wù)器可以在正式發(fā)布資源之前,通過與連接客戶端之間的交互,利用客戶端所請求分片數(shù)據(jù)是否下載成功的結(jié)果確定資源中存在的錯誤的分片數(shù)據(jù),從而可以重新請求正確的分片數(shù)據(jù)或者刪除錯誤的分片數(shù)據(jù),以使所發(fā)布的資源中不存在錯誤的分片數(shù)據(jù),保證客戶端可以下載到正確的資源,提高服務(wù)器的服務(wù)質(zhì)量。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明數(shù)據(jù)校驗方法的一個實施例流程圖;圖2A為本發(fā)明數(shù)據(jù)校驗方法的另一個實施例流程圖;圖2B為應(yīng)用本發(fā)明實施例方法的緩存服務(wù)器與客戶端之間的架構(gòu)示意圖;圖3為本發(fā)明服務(wù)器的一個實施例框圖4為本發(fā)明服務(wù)器的另一個實施例框圖;圖5為本發(fā)明服務(wù)器的另一個實施例框圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。參見圖1,為本發(fā)明數(shù)據(jù)校驗方法的一個實施例流程圖,該實施例從服務(wù)器與所連接的一個客戶端之間的交互描述數(shù)據(jù)校驗的過程步驟101 :服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù)。
本發(fā)明實施例中,服務(wù)器抓取與BT協(xié)議相關(guān)的關(guān)鍵數(shù)據(jù)包以獲取PT資源。例如,服務(wù)器通過抓取與BT協(xié)議相關(guān)的關(guān)鍵數(shù)據(jù)包的方式獲取被發(fā)布的PT資源的信息以及請求過該PT資源的客戶端的信息。服務(wù)器與請求過該PT資源的客戶端建立連接以獲取上述被發(fā)布的PT資源。具體的,服務(wù)器抓取用于獲得PT資源的,包括資源哈希,即infoHash,值的,GET ANNOUNCE數(shù)據(jù)包,并抓取BT客戶端發(fā)送的用于請求PT資源的BT HandShake數(shù)據(jù)包。然后,服務(wù)器通過分析抓取到的關(guān)鍵數(shù)據(jù)包,即GET ANNOUNCE數(shù)據(jù)包和BTHandShake數(shù)據(jù)包,建立infoHash與PEER的對應(yīng)關(guān)系的列表。服務(wù)器可以進一步記錄每個infoHash對應(yīng)的PT資源被請求的次數(shù),當某個PT資源的訪問次數(shù)達到預(yù)設(shè)值時,服務(wù)器與列表中與該PT資源對應(yīng)的PEER建立連接以獲得該PT資源。在本實施例的一個實現(xiàn)方式中,服務(wù)器向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的所有分片數(shù)據(jù)的標識;服務(wù)器接收所述客戶端根據(jù)所述分片數(shù)據(jù)列表發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端從所述分片數(shù)據(jù)列表中選擇的分片數(shù)據(jù)的標識;服務(wù)器將與所述選擇的分片數(shù)據(jù)的標識對應(yīng)的分片數(shù)據(jù)發(fā)送給所述客戶端。步驟102 :記錄所述客戶端請求的分片數(shù)據(jù)的下載信息。在本實施例的一個可選的實現(xiàn)方式中,所述客戶端請求的分片數(shù)據(jù)的下載信息中包括客戶端所請求的分片數(shù)據(jù)的請求次數(shù),該請求次數(shù)的初始值為0,當服務(wù)器接收到所述客戶端發(fā)送的分片數(shù)據(jù)請求消息后,將所述分片數(shù)據(jù)請求消息所請求的分片數(shù)據(jù)的請求次數(shù)加I。在本實施例的另一可選的實現(xiàn)方式中,所述客戶端請求的分片數(shù)據(jù)的下載信息中包括客戶端所請求的分片數(shù)據(jù)的請求次數(shù)和所述分片數(shù)據(jù)的請求結(jié)果;該請求次數(shù)的初始值為0,當服務(wù)器接收到所述客戶端發(fā)送的分片數(shù)據(jù)請求消息后,將所述分片數(shù)據(jù)請求消息所請求的分片數(shù)據(jù)的請求次數(shù)加I;該請求結(jié)果初始為未完成,當服務(wù)器接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。步驟103 :當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。在本實施例的一個實現(xiàn)方式中,當服務(wù)器接收到客戶端發(fā)送的斷開連接消息時,服務(wù)器確定該客戶端已經(jīng)斷開與該服務(wù)器的連接,此時服務(wù)器判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,所述下載完成通知消息為所述客戶端成功下載請求的所有分片數(shù)據(jù)后向所述服務(wù)器返回的消息,當服務(wù)器未接收到所述下載完成通知消息時,服務(wù)器確定所述客戶端異常斷開與所述服務(wù)器的連接。在上述步驟102中記錄的所述客戶端請求的分片數(shù)據(jù)的下載信息中包括客戶端所請求的分片數(shù)據(jù)的請求次數(shù)的情況下,在服務(wù)器判斷所述客戶端異常斷開與所述服務(wù)器的連接時,服務(wù)器查找記錄的下載信息中每個分片數(shù)據(jù)的下載記錄,所述下載記錄中包括每個分片數(shù)據(jù)的請求次數(shù),當所述下載記錄中存在請求次數(shù)超過預(yù)定次數(shù),例如一次,的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù);在上述步驟102中記錄的所述客戶端請求的分片數(shù)據(jù)的下載信息中包括客戶端所請求的分片數(shù)據(jù)的請求次數(shù)以及所述分片數(shù)據(jù)的請求結(jié)果的情況下,當所述下載記錄中存在請求次數(shù)超過預(yù)定次數(shù),例如一次,且所述請求結(jié)果為未完成的分片數(shù)據(jù)時,服務(wù)器確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù)。本發(fā)明實施例中,需要下載PT資源的客戶端可以獲得PT資源的種子文件,通過該種子文件中的內(nèi)容哈希值,可以校驗所下載的PT資源的分片數(shù)據(jù)是否正確,因此服務(wù)器在獲取到PT資源,并在向客戶端正式發(fā)布該PT資源之前,可以采用上述實施例,通過與連接到服務(wù)器的客戶端之間的交互,利用客戶端所請求分片數(shù)據(jù)是否下載成功的結(jié)果確定PT 資源中存在的錯誤的分片數(shù)據(jù),從而可以重新請求正確的分片數(shù)據(jù)或者刪除錯誤的分片數(shù)據(jù),以使所發(fā)布的資源中不存在錯誤的分片數(shù)據(jù),保證客戶端可以下載到正確的資源,提高服務(wù)器的服務(wù)質(zhì)量。參見圖2,為本發(fā)明數(shù)據(jù)校驗方法的另一個實施例流程圖,該實施例通過連接多個客戶端以實現(xiàn)對緩存服務(wù)器上待發(fā)布資源的所有分片數(shù)據(jù)進行校驗的詳細過程步驟201 :緩存服務(wù)器通過無種方式獲取待發(fā)布的資源后,進入資源校驗?zāi)J健1緦嵤├?,緩存服?wù)器通過無種方式獲取的資源可以具體為PT資源。本發(fā)明實施例中,服務(wù)器抓取與BT協(xié)議相關(guān)的關(guān)鍵數(shù)據(jù)包以獲取PT資源。例如,服務(wù)器通過抓取與BT協(xié)議相關(guān)的關(guān)鍵數(shù)據(jù)包的方式獲取被發(fā)布的PT資源的信息以及請求過該PT資源的客戶端的信息。服務(wù)器與請求過該PT資源的客戶端建立連接以獲取上述被發(fā)布的PT資源。具體的,服務(wù)器抓取用于獲得PT資源的,包括資源哈希,即infoHash,值的,GET ANNOUNCE數(shù)據(jù)包,并抓取BT客戶端發(fā)送的用于請求PT資源的BT HandShake數(shù)據(jù)包。然后,服務(wù)器通過分析抓取到的關(guān)鍵數(shù)據(jù)包,即GET ANNOUNCE數(shù)據(jù)包和BT HandShake數(shù)據(jù)包,建立infoHash與PEER的對應(yīng)關(guān)系的列表。服務(wù)器可以進一步記錄每個infoHash對應(yīng)的PT資源被請求的次數(shù),當某個PT資源的訪問次數(shù)達到預(yù)設(shè)值時,服務(wù)器與列表中與該PT資源對應(yīng)的PEER建立連接以獲得該PT資源。PT資源是按照分片數(shù)據(jù)的形式進行管理和共享的,例如,一個500MB的PT資源,每個分片數(shù)據(jù)大小為8MB,則該PT資源共有63個分片數(shù)據(jù)。在某個客戶端發(fā)布PT資源之前,先為該PT資源建立種子文件,在建立種子文件時,需要計算PT資源中的每一個分片數(shù)據(jù)的內(nèi)容哈希值,將所有分片數(shù)據(jù)各自的內(nèi)容哈希值包含在種子文件中。除了分片數(shù)據(jù)的內(nèi)容哈希值外,種子文件中通常還可以包括資源名稱、分片數(shù)據(jù)的大小、分片數(shù)據(jù)的分片數(shù)量等;需要下載該PT資源的客戶端可以獲得PT資源的種子文件,通過該種子文件中的內(nèi)容哈希值,可以校驗所下載的PT資源的分片數(shù)據(jù)是否正確,例如,對于下載的一個分片數(shù)據(jù),可以計算該分片數(shù)據(jù)的內(nèi)容哈希值,如果該計算的內(nèi)容哈希值與種子文件中包含的該分片數(shù)據(jù)的內(nèi)容哈希值相同,則確定該分片數(shù)據(jù)下載正確,否則,該分片數(shù)據(jù)下載錯誤。
本發(fā)明實施例中,為了減少多個客戶端同時從同一個客戶端下載PT資源,導(dǎo)致對網(wǎng)絡(luò)帶寬的占用,可以由緩存服務(wù)器通過無種方式先從發(fā)布該PT資源的客戶端獲取該PT資源。通常,緩存服務(wù)器下載PT資源時,由于無法獲得PT資源的種子文件,也就無法通過種子文件中的內(nèi)容哈希值對所下載的PT資源的分片數(shù)據(jù)進行校驗,因此本發(fā)明實施例中緩存服務(wù)器在向待下載PT資源的客戶端正式發(fā)布PT資源之前,首先進入資源校驗?zāi)J?,由緩存服?wù)器連接少量的客戶端,利用這些客戶端已經(jīng)有的PT資源的種子文件,對該緩存服務(wù)器上緩存的PT資源中可能存在的錯誤的分片數(shù)據(jù)進行校驗,以保證最終向連接到該緩存服務(wù)器的所有客戶端所發(fā)布的PT資源中均為正確的分片數(shù)據(jù)。參見圖2B,為應(yīng)用本發(fā)明實施例方法的緩存服務(wù)器與客戶端之間的架構(gòu)示意圖。步驟202 :緩存服務(wù)器連接客戶端。
在資源校驗?zāi)J较?,緩存服?wù)器可以連接一個客戶端。緩存服務(wù)器也可以連接一個以上的客戶端,緩存服務(wù)器與各個連接的客戶端并行進行數(shù)據(jù)校驗。以下以緩存服務(wù)器連接一個客戶端為例說明本發(fā)明實施例的一個實現(xiàn)方式。步驟203 :緩存服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的分片數(shù)據(jù)。PT資源的資源提供方為組成PT資源的每個分片數(shù)據(jù)分配標識,當緩存服務(wù)器從資源提供方下載PT資源時,可以獲得PT資源的每個分片數(shù)據(jù)的標識。當一個客戶端連接緩存服務(wù)器后,緩存服務(wù)器可以向該客戶端發(fā)送緩存的PT資源的分片數(shù)據(jù)列表,該分片數(shù)據(jù)列表中包含所有分片數(shù)據(jù)的標識,即分片數(shù)據(jù)號;客戶端接收到分片數(shù)據(jù)列表后,可以根據(jù)自身需要請求該分片數(shù)據(jù)列表中包含的分片數(shù)據(jù),在請求分片數(shù)據(jù)時,該客戶端可以每一次從分片數(shù)據(jù)列表包含的分片數(shù)據(jù)的標識中選擇一個分片數(shù)據(jù)的標識,將選擇的分片數(shù)據(jù)的標識寫入分片數(shù)據(jù)請求消息,并發(fā)送到服務(wù)器;服務(wù)器每接收到一個分片數(shù)據(jù)請求消息,按照該分片數(shù)據(jù)請求消息中包含的分片數(shù)據(jù)的標識,將獲取到的與該分片數(shù)據(jù)的標識對應(yīng)的分片數(shù)據(jù)發(fā)送給客戶端。本實施例中,假設(shè)PT資源中包含十個分片數(shù)據(jù),其標識分別表示為分片I、分片2、分片3、分片4、分片5、分片6、分片7、分片8、分片9、分片10。緩存服務(wù)器進入校驗?zāi)J胶?,假設(shè)連接的第一個客戶端請求其中的前三個分片數(shù)據(jù),即分片I、分片2和分片3,則該客戶端每一次從前三個分片數(shù)據(jù)的標識中選擇一個標識寫入到分片數(shù)據(jù)請求消息中。步驟204 :緩存服務(wù)器記錄所述客戶端請求的分片數(shù)據(jù)的下載信息。本步驟中,緩存服務(wù)器記錄的下載信息的具體內(nèi)容有所區(qū)別例如,有些客戶端在校驗通過分片數(shù)據(jù)請求消息所請求的分片數(shù)據(jù)錯誤后,可能會重復(fù)發(fā)送分片數(shù)據(jù)請求消息,因此緩存服務(wù)器可以根據(jù)分片數(shù)據(jù)請求消息的發(fā)送次數(shù)確定分片數(shù)據(jù)是否錯誤;具體操作時,在客戶端通過發(fā)送分片數(shù)據(jù)請求消息請求分片數(shù)據(jù)的過程中,當緩存服務(wù)器接收到該客戶端發(fā)送的分片數(shù)據(jù)請求消息后,將該分片數(shù)據(jù)請求消息所請求的分片數(shù)據(jù)的請求次數(shù)加I。又例如,有些客戶端在校驗通過分片數(shù)據(jù)請求消息所請求的分片數(shù)據(jù)正確后,會向緩存服務(wù)器發(fā)送對應(yīng)該分片數(shù)據(jù)的完成消息,例如在BT協(xié)議中為have消息,而在校驗分片數(shù)據(jù)錯誤后,不向緩存服務(wù)器返回任何消息,也不會重復(fù)發(fā)送分片數(shù)據(jù)請求消息,因此緩存服務(wù)器可以根據(jù)是否接收到完成消息確定分片數(shù)據(jù)是否正確;具體操作時,當緩存服務(wù)器接收到該客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將該分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。其中,當緩存服務(wù)器接收到客戶端針對某個分片數(shù)據(jù)首次發(fā)送的分片數(shù)據(jù)請求消息時,可以以該分片數(shù)據(jù)請求消息中包含的分片數(shù)據(jù)的標識為索引,為該分片數(shù)據(jù)建立下載信息的記錄表項,通過該記錄表項記錄該分片數(shù)據(jù)的請求次數(shù),或者通過該記錄表項記錄該分片數(shù)據(jù)的請求次數(shù)和請求結(jié)果。如下表I所示,為緩存服務(wù)器記錄的第一個客戶端所請求的前三個分片數(shù)據(jù)的下載信息表I
分片數(shù)據(jù)的標識請求次數(shù)請求結(jié)果分片IIhave
分片2
分片32上述表I僅為示例性描述,在實際應(yīng)用中,緩存服務(wù)器每次連接的一個客戶端可能僅屬于上述示例的兩種類型的客戶端中的一種。步驟205 :當所述客戶端斷開與所述緩存服務(wù)器的連接時,判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,若緩存服務(wù)器接收到所述客戶端發(fā)送的下載完成通知消息,則執(zhí)行步驟209 ;若緩存服務(wù)器未接收到所述客戶端發(fā)送的下載完成通知消息,則跳轉(zhuǎn)到步驟206。通??蛻舳巳绻谡埱笸晁蟹制瑪?shù)據(jù),并確定這些分片數(shù)據(jù)均下載成功時,可以向緩存服務(wù)器發(fā)送一個下載完成通知消息,例如,在BT協(xié)議中該下載完成通知消息為uninterested消息。發(fā)送完下載完成通知消息后,客戶端可以向緩存服務(wù)器發(fā)送一個斷開連接報文,斷開與緩存服務(wù)器的連接。當客戶端在請求分片數(shù)據(jù)的過程中,如果發(fā)現(xiàn)請求到錯誤的分片數(shù)據(jù),則也可以向緩存服務(wù)器發(fā)送一個斷開連接報文,主動斷開與緩存服務(wù)器的連接。緩存服務(wù)器接收到客戶端發(fā)送的斷開連接報文后,可以獲知客戶端已經(jīng)斷開與緩存服務(wù)器之間的連接,例如,當緩存服務(wù)器與客戶端之間基于傳輸控制協(xié)議(英文為Transmission Control Protocol,縮寫為TCP)建立連接時,該斷開連接報文為FIN報文。因此,當客戶端斷開與緩存服務(wù)器的連接時,緩存服務(wù)器可以判斷是否接收到該客戶端發(fā)送的下載完成通知消息,如果接收到下載完成通知消息,則確定客戶端是正常斷開,且客戶端已經(jīng)請求完其所需的所有分片數(shù)據(jù);如果未接收到下載完成通知消息,則確定客戶端是異常斷開,且客戶端可能還未請求完其所需的所有分片數(shù)據(jù)。步驟206 :確定所述客戶端異常斷開與所述緩存服務(wù)器的連接,根據(jù)所述下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。仍然以緩存服務(wù)器連接的第一個客戶端為例,結(jié)合前述表I可知,當緩存服務(wù)器確定該客戶端異常斷開與該緩存服務(wù)器的連接后,緩存服務(wù)器查找表I記錄的下載信息,例如,可以先查找請求次數(shù)的記錄,獲取其中分片3對應(yīng)的第三個分片數(shù)據(jù)被請求過兩次,則確定第三個分片數(shù)據(jù)為錯誤的分片數(shù)據(jù);然后可以查找請求結(jié)果的記錄,獲取其中分片2對應(yīng)的第二個分片數(shù)據(jù)的請求次數(shù)為1,但是未返回“have”消息,則確定第二個分片數(shù)據(jù)為錯誤的分片數(shù)據(jù)。本實施例示出了第一個客戶端請求過其所需要的所有分片數(shù)據(jù)后,才異常斷開與緩存服務(wù)器的連接,實際應(yīng)用中,某個客戶端可能在未請求完所需要的所有分片數(shù)據(jù)前,當請求到某個錯誤的分片數(shù)據(jù)時就斷開與緩存服務(wù)器的連接,對此本發(fā)明實施例不進行限制。步驟207 :緩存服務(wù)器刪除所述錯誤的分片數(shù)據(jù)。由前述步驟描述的過程,緩存服務(wù)器通過連接的一個客戶端,可以識別出該客戶端在異常斷開時,已經(jīng)請求過的分片數(shù)據(jù)中包含的錯誤的分片數(shù)據(jù),因此緩存服務(wù)器可以刪除這些錯誤的分片數(shù)據(jù)。在刪除錯誤的分片數(shù)據(jù)后,可以重新下載這些分片數(shù)據(jù),并通過后續(xù)連接的客戶端對這些分片數(shù)據(jù)及還未請求過的分片數(shù)據(jù)進行校驗。步驟208 :判斷除所述刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,是否有未被客戶 端請求過的分片數(shù)據(jù),若有未被客戶端請求過的分片數(shù)據(jù),則返回步驟202 ;若沒有未被客戶端請求過的分片數(shù)據(jù),則結(jié)束當前流程。仍然以緩存服務(wù)器連接的第一個客戶端為例,結(jié)合前述表I的校驗結(jié)果,當該客戶端請求完三個分片數(shù)據(jù)后,緩存服務(wù)器上還有七個分片數(shù)據(jù)未被校驗,因此緩存服務(wù)器可以通過連接下一個客戶端,對未被校驗過的分片數(shù)據(jù)進行校驗,直至該緩存服務(wù)器上所有的分片數(shù)據(jù)均被校驗過。本步驟中,緩存服務(wù)器在本次資源校驗?zāi)J较碌乃蟹制瑪?shù)據(jù)均被客戶端請求過后,則結(jié)束本次資源校驗?zāi)J较碌男r灹鞒?,后續(xù)緩存服務(wù)器可以重新下載已經(jīng)被刪除的分片數(shù)據(jù),并重新開啟下一次的資源校驗?zāi)J?,下一次資源校驗?zāi)J较碌男r炦^程與本實施例的過程一致,在此不再贅述,直到緩存服務(wù)器上緩存的所有分片數(shù)據(jù)均正確,則緩存服務(wù)器可以結(jié)束資源校驗?zāi)J?,向客戶端發(fā)布由正確的分片數(shù)據(jù)組成的PT資源。步驟209 :判斷是否有未被客戶端請求過的分片數(shù)據(jù),若有未被客戶端請求過的分片數(shù)據(jù),則返回步驟202 ;若沒有未被客戶端請求過的分片數(shù)據(jù),則結(jié)束當前流程。當接收到客戶端發(fā)送的下載完成通知消息后,確定客戶端請求的所有分片數(shù)據(jù)均下載成功,因此緩存服務(wù)器判斷除了已經(jīng)下載成功的分片數(shù)據(jù)外,是否還存在未被客戶端請求過的分片數(shù)據(jù),如果仍存在未被客戶端請求過的分片數(shù)據(jù),則可以通過連接下一個客戶端對剩余的分片數(shù)據(jù)進行校驗,直至該緩存服務(wù)器上所有的分片數(shù)據(jù)均被校驗過。由上述實施例可見,本發(fā)明實施例中,需要下載PT資源的客戶端可以獲得PT資源的種子文件,通過該種子文件中的內(nèi)容哈希值,可以校驗所下載的PT資源的分片數(shù)據(jù)是否正確,因此服務(wù)器在獲取到PT資源,并在向客戶端正式發(fā)布該PT資源之前,可以采用上述實施例,通過與連接到服務(wù)器的客戶端之間的交互,利用客戶端所請求分片數(shù)據(jù)是否下載成功的結(jié)果確定PT資源中存在的錯誤的分片數(shù)據(jù),從而可以重新請求正確的分片數(shù)據(jù)或者刪除錯誤的分片數(shù)據(jù),以使所發(fā)布的資源中不存在錯誤的分片數(shù)據(jù),保證客戶端可以下載到正確的資源,提高服務(wù)器的服務(wù)質(zhì)量。與本發(fā)明數(shù)據(jù)校驗方法的實施例相對應(yīng),本發(fā)明還提供了用于執(zhí)行該方法的服務(wù)器的實施例。參見圖3,為本發(fā)明服務(wù)器的一個實施例框圖
該服務(wù)器包括發(fā)送單元310、記錄單元320、判斷單元330和確定單元340。其中,發(fā)送單元310,用于向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù);記錄單元320,用于記錄所述發(fā)送單元310發(fā)送的所述客戶端請求的分片數(shù)據(jù)的下載信息;判斷單元330,用于判斷所述客戶端是否異常斷開與所述服務(wù)器的連接;確定單元340,用于當所述判斷單元330判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述記錄單元320記錄的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。參見圖4,為本發(fā)明服務(wù)器的另一個實施例框圖 該服務(wù)器包括發(fā)送單元410、接收單元420、記錄單元430、判斷單元440、確定單元450、刪除單元460、連接單元470和執(zhí)行單元480。其中,發(fā)送單元410,用于向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識;接收單元420,用于接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識;所述發(fā)送單元410,還用于向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù);記錄單元430,記錄所述發(fā)送單元410發(fā)送的所述客戶端請求的分片數(shù)據(jù)的下載
信息;判斷單元440,用于判斷所述客戶端是否異常斷開與所述服務(wù)器的連接;確定單元450,用于當所述判斷單元440判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述記錄單元430記錄的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。刪除單元460,用于刪除所述確定單元450確定的錯誤的分片數(shù)據(jù);連接單元470,用于當所述服務(wù)器上除所述刪除單元460刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端;執(zhí)行單元480,用于當所述連接單元470連接客戶端后,觸發(fā)所述發(fā)送單元410重復(fù)執(zhí)行所述向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。在本實施例的一個實現(xiàn)方式中,所述記錄單元430,具體用于記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),或者,記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),并記錄所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。在本實施例的另一個實現(xiàn)方式中,所述判斷單元440,具體用于當所述客戶端斷開與所述服務(wù)器的連接時,判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,所述下載完成通知消息為所述客戶端成功下載請求的所有分片數(shù)據(jù)后向所述服務(wù)器返回的消息;當未接收到所述下載完成通知消息時,確定所述客戶端異常斷開與所述服務(wù)器的連接。
在本實施例的另一個實現(xiàn)方式中,所述確定單元450,具體用于查找所述下載信息中每個分片數(shù)據(jù)的下載記錄,所述下載記錄中包括每個分片數(shù)據(jù)的請求次數(shù),和/或請求結(jié)果;當所述下載記錄中存在請求次數(shù)超過一次的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù);當所述下載記錄中存在請求次數(shù)為一次,且所述請求結(jié)果為未完成的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤分的分片數(shù)據(jù)。參見圖5,為本發(fā)明服務(wù)器的另一個實施例框圖該服務(wù)器包括通信總線510、網(wǎng)絡(luò)接口 520、存儲器530和處理器540。其中,所述通信總線510,用于連接所述網(wǎng)絡(luò)接口 520、存儲器530和處理器540 ;所述網(wǎng)絡(luò)接口 520,用于連接接入所述服務(wù)器的客戶端;所述存儲器530,用于保存PT資源的分片數(shù)據(jù),以及分片數(shù)據(jù)的下載信息;
所述處理器540,用于通過所述網(wǎng)絡(luò)接口 510向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),將所述客戶端請求的分片數(shù)據(jù)的下載信息記錄到所述存儲器530,并且當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述存儲器530中保存的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。在本實施例的一個實現(xiàn)方式中,所述處理器540,還用于通過所述網(wǎng)絡(luò)接口向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識,以及接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。在本實施例的另一個實現(xiàn)方式中,所述處理器540,具體用于將所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)記錄到所述存儲器,或者,將所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)和所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果記錄到所述存儲器,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。在本實施例的另一個實現(xiàn)方式中,所述處理器540,還用于從所述存儲器中刪除所述錯誤的分片數(shù)據(jù),以及當所述服務(wù)器上除所述刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端,重復(fù)執(zhí)行所述向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。由上述實施例可見,本發(fā)明實施例中服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的分片數(shù)據(jù),并記錄所述客戶端請求的分片數(shù)據(jù)的下載信息,當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。應(yīng)用本發(fā)明實施例,由于客戶端可以獲得資源數(shù)據(jù)的哈希值,并利用資源數(shù)據(jù)的哈希值對分片數(shù)據(jù)進行校驗,因此服務(wù)器可以在正式發(fā)布資源之前,通過與連接客戶端之間的交互,利用客戶端所請求分片數(shù)據(jù)是否下載成功的結(jié)果確定資源中存在的錯誤的分片數(shù)據(jù),從而可以重新請求正確的分片數(shù)據(jù)或者刪除錯誤的分片數(shù)據(jù),以使所發(fā)布的資源中不存在錯誤的分片數(shù)據(jù),保證客戶端可以下載到正確的資源,提高服務(wù)器的服務(wù)質(zhì)量。本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實施例中的技術(shù)可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明實施例中的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見
以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護范圍的限定。任何在本發(fā)明的保護范圍之內(nèi)所作的修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)校驗方法,其特征在于,所述方法包括 服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的私用跟蹤器PT資源的分片數(shù)據(jù); 記錄所述客戶端請求的分片數(shù)據(jù)的下載信息; 當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù)之前,還包括 服務(wù)器向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識; 接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述記錄所述客戶端請求的分片數(shù)據(jù)的下載信息包括 記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述記錄所述客戶端請求的分片數(shù)據(jù)的下載信息包括 記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),并記錄所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。
5.根據(jù)權(quán)利要求I至4任意一項所述的方法,其特征在于,所述判斷所述客戶端異常斷開與所述服務(wù)器的連接,包括 當所述客戶端斷開與所述服務(wù)器的連接時,判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,所述下載完成通知消息為所述客戶端成功下載請求的所有分片數(shù)據(jù)后向所述服務(wù)器返回的消息; 當未接收到所述下載完成通知消息時,確定所述客戶端異常斷開與所述服務(wù)器的連接。
6.根據(jù)權(quán)利要求I至5任意一項所述的方法,其特征在于,將所述下載信息中記錄的未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù),包括 查找所述下載信息中每個分片數(shù)據(jù)的下載記錄,所述下載記錄中包括每個分片數(shù)據(jù)的請求次數(shù),和/或請求結(jié)果; 當所述下載記錄中存在請求次數(shù)超過一次的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù); 當所述下載記錄中存在請求次數(shù)為一次,且所述請求結(jié)果為未完成的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤分的分片數(shù)據(jù)。
7.根據(jù)權(quán)利要求I至6任意一項所述的方法,其特征在于,所述方法還包括 服務(wù)器刪除所述錯誤的分片數(shù)據(jù); 當所述服務(wù)器上除所述刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端; 重復(fù)執(zhí)行所述服務(wù)器向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù)的步驟,直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。
8.一種服務(wù)器,其特征在于,所述服務(wù)器包括 發(fā)送單元,用于向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù); 記錄單元,用于記錄所述發(fā)送單元發(fā)送的所述客戶端請求的分片數(shù)據(jù)的下載信息; 判斷單元,用于判斷所述客戶端是否異常斷開與所述服務(wù)器的連接; 確定單元,用于當所述判斷單元判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述記錄單元記錄的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的服務(wù)器,其特征在于, 所述發(fā)送單元,還用于向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識; 所述服務(wù)器還包括 接收單元,用于接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。
10.根據(jù)權(quán)利要求8或9所述的服務(wù)器,其特征在于, 所述記錄單元,具體用于記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),或者,記錄所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù),并記錄所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。
11.根據(jù)權(quán)利要求8至10任意一項所述的服務(wù)器,其特征在于, 所述判斷單元,具體用于當所述客戶端斷開與所述服務(wù)器的連接時,判斷是否接收到所述客戶端發(fā)送的下載完成通知消息,所述下載完成通知消息為所述客戶端成功下載請求的所有分片數(shù)據(jù)后向所述服務(wù)器返回的消息;當未接收到所述下載完成通知消息時,確定所述客戶端異常斷開與所述服務(wù)器的連接。
12.根據(jù)權(quán)利要求8至11任意一項所述的服務(wù)器,其特征在于, 所述確定單元,具體用于查找所述下載信息中每個分片數(shù)據(jù)的下載記錄,所述下載記錄中包括每個分片數(shù)據(jù)的請求次數(shù),和/或請求結(jié)果;當所述下載記錄中存在請求次數(shù)超過一次的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤的分片數(shù)據(jù);當所述下載記錄中存在請求次數(shù)為一次,且所述請求結(jié)果為未完成的分片數(shù)據(jù)時,確定所述分片數(shù)據(jù)為錯誤分的分片數(shù)據(jù)。
13.根據(jù)權(quán)利要求8至12任意一項所述的服務(wù)器,其特征在于,還包括 刪除單元,用于刪除所述確定單元確定的錯誤的分片數(shù)據(jù); 連接單元,用于當所述服務(wù)器上除所述刪除單元刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端; 執(zhí)行單元,用于當所述連接單元連接客戶端后,觸發(fā)所述發(fā)送單元重復(fù)執(zhí)行所述向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。
14.一種服務(wù)器,其特征在于,所述服務(wù)器包括通信總線、網(wǎng)絡(luò)接口、存儲器和處理器,其中, 所述通信總線,用于連接所述網(wǎng)絡(luò)接口、存儲器和處理器;所述網(wǎng)絡(luò)接口,用于連接接入所述服務(wù)器的客戶端; 所述存儲器,用于保存PT資源的分片數(shù)據(jù),以及分片數(shù)據(jù)的下載信息; 所述處理器,用于通過所述網(wǎng)絡(luò)接口向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),將所述客戶端請求的分片數(shù)據(jù)的下載信息記錄到所述存儲器,并且當判斷所述客戶端異常斷開與所述服務(wù)器的連接時,根據(jù)所述存儲器中保存的下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于, 所述處理器,還用于通過所述網(wǎng)絡(luò)接口向所述連接的客戶端發(fā)送分片數(shù)據(jù)列表,所述分片數(shù)據(jù)列表中包含所述服務(wù)器上緩存的分片數(shù)據(jù)的標識,以及接收所述客戶端發(fā)送的分片數(shù)據(jù)請求消息,所述分片數(shù)據(jù)請求消息中包含所述客戶端請求的分片數(shù)據(jù)的標識。
16.根據(jù)權(quán)利要求14或15所述的服務(wù)器,其特征在于, 所述處理器,具體用于將所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)記錄到所述存儲器,或者,將所述客戶端請求的分片數(shù)據(jù)被請求的次數(shù)和所述客戶端請求的分片數(shù)據(jù)的請求結(jié)果記錄到所述存儲器,其中所述分片數(shù)據(jù)的請求結(jié)果初始為未完成,當接收到所述客戶端返回的請求分片數(shù)據(jù)成功的完成消息時,將所述分片數(shù)據(jù)的請求結(jié)果設(shè)置為完成。
17.根據(jù)權(quán)利要求14至16任意一項所述的服務(wù)器,其特征在于, 所述處理器,還用于從所述存儲器中刪除所述錯誤的分片數(shù)據(jù),以及當所述服務(wù)器上除所述刪除的分片數(shù)據(jù)外的剩余的分片數(shù)據(jù)中,有未被客戶端請求過的分片數(shù)據(jù)時,連接下一個客戶端,重復(fù)執(zhí)行所述向所連接的客戶端發(fā)送所述客戶端請求的PT資源的分片數(shù)據(jù),直至所述服務(wù)器上的所有分片數(shù)據(jù)均被客戶端請求過。
全文摘要
本發(fā)明公開了數(shù)據(jù)校驗方法及服務(wù)器,該方法包括服務(wù)器向所連接的客戶端發(fā)送該客戶端請求的PT資源的分片數(shù)據(jù);記錄該客戶端請求的分片數(shù)據(jù)的下載信息;當判斷該客戶端異常斷開與服務(wù)器的連接時,根據(jù)下載信息將未下載成功的分片數(shù)據(jù)確定為錯誤的分片數(shù)據(jù)。本發(fā)明中服務(wù)器可以在正式發(fā)布資源之前,通過與連接客戶端之間的交互,利用客戶端所請求分片數(shù)據(jù)是否下載成功的結(jié)果確定資源中存在的錯誤的分片數(shù)據(jù),從而可以重新請求正確的分片數(shù)據(jù)或者刪除錯誤的分片數(shù)據(jù),以使所發(fā)布的資源中不存在錯誤的分片數(shù)據(jù),保證客戶端可以下載到正確的資源,提高服務(wù)器的服務(wù)質(zhì)量。
文檔編號H04L1/00GK102882961SQ201210356580
公開日2013年1月16日 申請日期2012年9月24日 優(yōu)先權(quán)日2012年9月24日
發(fā)明者謝羽 申請人:華為技術(shù)有限公司