專利名稱:一種共享文件的訪問(wèn)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)與應(yīng)用技術(shù)領(lǐng)域,特別涉及一種共享文件的訪 問(wèn)方法和裝置。
背景技術(shù):
目前,人們對(duì)于網(wǎng)絡(luò)的使用越來(lái)越普遍。在家里、辦公地點(diǎn)或公共場(chǎng)所, 人們都可以輕松地連接并使用網(wǎng)絡(luò)。隨著人們對(duì)于網(wǎng)絡(luò)傳輸速率的不斷追求,
為了獲得更快的網(wǎng)絡(luò)傳輸速率,P2P (Peerto Peer,伙伴對(duì)伙伴)技術(shù)開(kāi)始被廣 泛應(yīng)用。P2P技術(shù)擺脫了傳統(tǒng)的C (Customer,客戶端)/S (Server,月良務(wù)端) 模式的服務(wù),使得用戶之間也可以進(jìn)行數(shù)據(jù)的交換,充分利用了網(wǎng)絡(luò)邊緣的資 源,極大地提高了數(shù)據(jù)傳輸?shù)乃俾省?br>
現(xiàn)有技術(shù)中,P2P技術(shù)在實(shí)現(xiàn)共享數(shù)據(jù)的交換時(shí),是在客戶端安裝特定的 P2P共享程序,通過(guò)這一特定的P2P共享程序的界面來(lái)訪問(wèn)全部的共享數(shù)據(jù)。 在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺點(diǎn) 由于P2P技術(shù)對(duì)于共享文件的訪問(wèn)方式與訪問(wèn)一般的本地驅(qū)動(dòng)器上的文件 完全不一樣,因此,可能會(huì)給不熟悉P2P技術(shù)的用戶帶來(lái)很多不便。
發(fā)明內(nèi)容
為了使不熟悉P2P技術(shù)的用戶也能熟練地使用P2P技術(shù)訪問(wèn)共享文件,本 發(fā)明實(shí)施例提供了一種共享文件的訪問(wèn)方法和裝置。所述技術(shù)方案如下 一種共享文件的訪問(wèn)方法包括
截獲用戶的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求中攜帶所述用戶訪問(wèn)的文件的元數(shù)據(jù) 信息和所述用戶訪問(wèn)的#:作類型;
根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重 定向;
如果是,根據(jù)所述用戶訪問(wèn)的操作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。 在所述截獲用戶的訪問(wèn)請(qǐng)求之前,所述方法還包括從已登陸的種子服務(wù)器中下載種子文件,所述種子文件攜帶共享文件的元 數(shù)據(jù)信息;
保存所述共享文件的元數(shù)據(jù)信息;
相應(yīng)地,所述根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述訪
問(wèn)請(qǐng)求進(jìn)行重定向,具體包括
在保存的所述共享文件的元數(shù)據(jù)信息中,查詢是否存在所述用戶訪問(wèn)的文
件的元數(shù)據(jù)信息;
如果存在,則判定對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向; 如果不存在,則判定不對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向。 在所述保存所述共享文件的元數(shù)據(jù)信息之后,所述方法還包括 根據(jù)已保存的所述共享文件的元數(shù)據(jù)信息,為所述共享文件創(chuàng)建目錄結(jié)構(gòu)。 所述根據(jù)所述用戶訪問(wèn)的操作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理,具體
包括
當(dāng)所述用戶訪問(wèn)的操作類型為讀操作時(shí),查詢本地的文件緩存中是否有可 用數(shù)據(jù);
如果有,則從所述文件緩存中獲取所述可用數(shù)據(jù); 如果沒(méi)有,則從伙伴對(duì)伙伴P2P網(wǎng)絡(luò)上獲取所述可用數(shù)據(jù); 將所述可用數(shù)據(jù)返回給所述用戶。 所述從P2P網(wǎng)絡(luò)上獲取所述可用數(shù)據(jù),具體包括
將所述用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,通過(guò)網(wǎng)絡(luò)進(jìn)行P2P的下載, 獲取所述可用數(shù)據(jù)。
一種共享文件的訪問(wèn)裝置,包括文件系統(tǒng)過(guò)濾驅(qū)動(dòng); 所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)包括
截獲模塊,用于截獲用戶的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求中攜帶所述用戶訪問(wèn) 的文件的元數(shù)據(jù)信息和所述用戶訪問(wèn)的操:作類型;
判斷模塊,用于根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述 訪問(wèn)請(qǐng)求進(jìn)行重定向;
處理模塊,用于如果所述判斷模塊的判斷結(jié)果為是,根據(jù)所述用戶訪問(wèn)的 操作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。
所述裝置還包括客戶端代理;所述客戶端代理包括
下載模塊,用于從已登陸的種子服務(wù)器中下載種子文件,所述種子文件攜 帶共享文件的元數(shù)據(jù)信息;
保存模塊,用于保存所述共享文件的元數(shù)據(jù)信息;
相應(yīng)地,所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)還包括
查詢模塊,用于在所述保存模塊保存的所述共享文件的元數(shù)據(jù)信息中,查
詢是否存在所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息;
判定模塊,用于根據(jù)所述查詢模塊的查詢結(jié)果判斷所述訪問(wèn)請(qǐng)求是否需要 重定向;
如果存在,則判定對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向; 如果不存在,則判定不對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向。 所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)還包括
創(chuàng)建模塊,用于根據(jù)所述客戶端代理中的所述保存模塊保存的所述共享文 件的元數(shù)據(jù)信息,為所述共享文件創(chuàng)建目錄結(jié)構(gòu)。 所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)中的判定模塊,具體包括
查詢單元,用于當(dāng)所述用戶訪問(wèn)的操作類型為讀操作時(shí),查詢本地的文件
緩存中是否有可用數(shù)據(jù);
獲取單元,用于當(dāng)所述查詢單元的查詢結(jié)果為有時(shí),從所述文件緩存中獲
取所述可用數(shù)據(jù);當(dāng)所述查詢單元的查詢結(jié)果為無(wú)時(shí),從伙伴對(duì)伙伴P2P網(wǎng)絡(luò)
上獲取所述可用數(shù)據(jù);
返回單元,用于將所述獲取單元獲取到的所述可用數(shù)據(jù)返回給所述用戶。 當(dāng)所述查詢單元的查詢結(jié)果為無(wú)時(shí),所述獲取單元具體用于 將所述用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,通過(guò)網(wǎng)絡(luò)進(jìn)行P2P的下載,
獲取所述可用數(shù)據(jù)。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是
通過(guò)文件系統(tǒng)訪問(wèn)重定向的方法,將P2P網(wǎng)絡(luò)上共享的文件以本地驅(qū)動(dòng)器 文件的形式呈現(xiàn)給用戶,并過(guò)濾、攔截對(duì)預(yù)先設(shè)定的需要進(jìn)行訪問(wèn)重定向的文 件及文件夾的訪問(wèn),將用戶的文件訪問(wèn)重定向到P2P網(wǎng)絡(luò),從而使用戶可以以 訪問(wèn)一般的本地驅(qū)動(dòng)器的文件的形式來(lái)訪問(wèn)P2P共享文件,使得不熟悉P2P技 術(shù)的用戶也能方便地訪問(wèn)P2P網(wǎng)絡(luò),對(duì)用戶的使用習(xí)慣、便捷性以及應(yīng)用的透明性而言,具有很大的優(yōu)勢(shì)。
圖l是本發(fā)明實(shí)施例1中提供的共享文件的訪問(wèn)方法流程圖2是本發(fā)明實(shí)施例2中提供的共享文件的訪問(wèn)方法流程圖3是本發(fā)明實(shí)施例3中提供的共享文件的訪問(wèn)裝置結(jié)構(gòu)示意圖4是本發(fā)明實(shí)施例3中提供的另一種共享文件的訪問(wèn)裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明 實(shí)施方式作進(jìn)一步地詳細(xì)描述。 實(shí)施例1
參見(jiàn)圖1,本實(shí)施例提供了一種共享文件的訪問(wèn)方法,包括
步驟101:截獲用戶的訪問(wèn)請(qǐng)求,該訪問(wèn)請(qǐng)求中攜帶用戶訪問(wèn)的文件的元數(shù)
據(jù)信息和用戶訪問(wèn)的#:作類型;
步驟102:根據(jù)用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)該訪問(wèn)請(qǐng)求進(jìn)行
重定向;
步驟103:如果是,根據(jù)用戶訪問(wèn)的操作類型對(duì)該用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。 其中,在步驟101之前,該方法還可以包括
從已登陸的種子服務(wù)器中下載種子文件,種子文件攜帶共享文件的元數(shù)據(jù) 信息;
保存共享文件的元凄t據(jù)信息; 相應(yīng)地,步驟102具體可以包括
在保存的共享文件的元數(shù)據(jù)信息中,查詢是否存在用戶訪問(wèn)的文件的元數(shù) 據(jù)信息;
如果存在,則判定對(duì)訪問(wèn)請(qǐng)求進(jìn)行重定向; 如果不存在,則判定不對(duì)訪問(wèn)請(qǐng)求進(jìn)行重定向。 步驟101之后該方法還可以包括
根據(jù)保存的共享文件的元數(shù)據(jù)信息,為共享文件創(chuàng)建目錄結(jié)構(gòu)。 步驟103具體可以包括當(dāng)用戶訪問(wèn)的操作類型為讀操作時(shí),查詢本地的文件緩存中是否有可用數(shù)
據(jù);
如果有,則從文件緩存中獲取可用數(shù)據(jù); 如果沒(méi)有,則從P2P網(wǎng)絡(luò)上獲取可用數(shù)據(jù); 將可用數(shù)據(jù)返回給用戶。
其中,步驟103中從P2P網(wǎng)絡(luò)上獲取可用數(shù)據(jù),具體可以包括 將用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,通過(guò)網(wǎng)絡(luò)進(jìn)行P2P的下載,獲取 可用數(shù)據(jù)。
通過(guò)文件系統(tǒng)訪問(wèn)重定向的方法,將P2P網(wǎng)絡(luò)上共享的文件以本地驅(qū)動(dòng)器 文件的形式呈現(xiàn)給用戶,并過(guò)濾、攔截對(duì)預(yù)先設(shè)定的需要進(jìn)行訪問(wèn)重定向的文 件及文件夾的訪問(wèn),將用戶的文件訪問(wèn)重定向到P2P網(wǎng)絡(luò),/人而4吏用戶可以以 訪問(wèn)一般的本地驅(qū)動(dòng)器的文件的形式來(lái)訪問(wèn)P2P共享文件,使得不熟悉P2P技 術(shù)的用戶也能方便地訪問(wèn)P2P網(wǎng)絡(luò),對(duì)用戶的使用習(xí)慣、便捷性以及應(yīng)用的透 明性而言,具有4艮大的優(yōu)勢(shì)。
實(shí)施例2
參見(jiàn)圖2,本發(fā)明實(shí)施例提供了一種共享文件的訪問(wèn)方法,包括 步驟201: P2P網(wǎng)絡(luò)中的客戶端為其共享文件或共享文件夾建立種子,并將 建立好的種子保存在種子服務(wù)器上向網(wǎng)絡(luò)中的其他客戶端進(jìn)行發(fā)布;同時(shí),客 戶端會(huì)運(yùn)行一個(gè)tracker (追蹤服務(wù)器),用于追蹤網(wǎng)絡(luò)中的其他客戶端發(fā)布的種 子信息;
其中,種子的類型包括但不限于BitTorrent (比特流)種子、eMule (電驢) 種子、Thurder (迅雷)種子等等。
步驟202: P2P網(wǎng)絡(luò)中的一個(gè)客戶端加載客戶軟件包;
其中,客戶軟件包由兩部分組成,分別是客戶端代理程序和文件系統(tǒng)過(guò) 濾驅(qū)動(dòng)。
其中,客戶端代理程序用于追蹤種子的發(fā)布信息、登陸種子服務(wù)器、進(jìn)行 客戶端的身份驗(yàn)證、使用P2P技術(shù)從網(wǎng)絡(luò)上獲取共享數(shù)據(jù);
文件系統(tǒng)過(guò)濾驅(qū)動(dòng)用于過(guò)濾并截獲客戶端用戶對(duì)于預(yù)先設(shè)定需要進(jìn)行訪問(wèn) 重定向的文件和/或文件夾的訪問(wèn)請(qǐng)求,并將訪問(wèn)請(qǐng)求交給客戶端代理程序,由客戶端代理程序從網(wǎng)絡(luò)上獲取相應(yīng)的可用數(shù)據(jù),完成客戶端用戶對(duì)于文件和/或 文件夾的訪問(wèn)操作。
步驟203:客戶端訪問(wèn)種子服務(wù)器,獲取共享文件的元數(shù)據(jù)信息;
客戶端通過(guò)客戶端代理程序追蹤種子的發(fā)布信息、登陸種子服務(wù)器,通過(guò) 身份驗(yàn)證后,從種子服務(wù)器中獲取共享文件和/或共享文件夾的名稱、大小、創(chuàng) 建時(shí)間、路徑等元數(shù)據(jù)信息,這些元數(shù)據(jù)信息均包含在P2P種子內(nèi)。
步驟204:客戶端根據(jù)獲取到的共享文件的元數(shù)據(jù)信息,通過(guò)客戶端代理程 序在客戶端本地創(chuàng)建一個(gè)共享文件夾及該文件夾下的共享文件的目錄結(jié)構(gòu);
同時(shí),將獲取到的元數(shù)據(jù)信息進(jìn)行保存,并傳遞給文件系統(tǒng)過(guò)濾驅(qū)動(dòng)。文 件系統(tǒng)過(guò)濾驅(qū)動(dòng)利用接收到的元數(shù)據(jù)信息設(shè)置相應(yīng)的文件和目錄為待過(guò)濾的文 件和目錄。
步驟205:客戶端的用戶在客戶端上訪問(wèn)文件或文件夾; 其中,用戶在某一客戶端上對(duì)于P2P的其他客戶端的訪問(wèn),可以像在本地 訪問(wèn)的形式那樣,訪問(wèn)某個(gè)文件或某個(gè)文件夾。對(duì)于用戶在本地計(jì)算機(jī)上訪問(wèn) 的文件和/或文件夾,有可能是步驟204中創(chuàng)建的、位于P2P的其他客戶端上的 文4牛和/或文4牛夾。
步驟206:文件系統(tǒng)過(guò)濾驅(qū)動(dòng)截獲客戶端用戶對(duì)于文件系統(tǒng)的所有訪問(wèn)請(qǐng) 求,根據(jù)客戶端代理程序傳遞的元數(shù)據(jù)信息,判斷用戶的本次訪問(wèn)是否需要重 定向
這里需要說(shuō)明的是,用戶的訪問(wèn)請(qǐng)求中可以攜帶用戶期望訪問(wèn)的文件或文 件夾的元數(shù)據(jù)信息,其中可以包括名稱、大小、創(chuàng)建時(shí)間、路徑等信息。通過(guò) 在文件系統(tǒng)過(guò)濾驅(qū)動(dòng)中查詢被設(shè)置為待過(guò)濾的文件和目錄的元數(shù)據(jù)信息,如果 存在用戶的訪問(wèn)請(qǐng)求中攜帶的用戶期望訪問(wèn)的文件或文件夾的元數(shù)據(jù)信息,則 文件系統(tǒng)過(guò)濾驅(qū)動(dòng)判定用戶的本次訪問(wèn)需要重定向,執(zhí)行步驟207;如果不存在, 則文件系統(tǒng)過(guò)濾驅(qū)動(dòng)判定用戶的本次訪問(wèn)不需要重定向,并將用戶的本次訪問(wèn) 直接交由底層的驅(qū)動(dòng)進(jìn)行處理。
例如,用戶的訪問(wèn)請(qǐng)求中攜帶用戶期望訪問(wèn)的文件或文件夾的路徑,在客 戶端代理程序?yàn)楣蚕砦募?chuàng)建的目錄結(jié)構(gòu)中,查詢是否存在用戶期望訪問(wèn)的文 件或文件夾的路徑;如果存在,則文件系統(tǒng)過(guò)濾驅(qū)動(dòng)判定用戶的本次訪問(wèn)需要 重定向,執(zhí)行步驟207;如果不存在,則文件系統(tǒng)過(guò)濾驅(qū)動(dòng)判定用戶的本次訪問(wèn)不需要重定向,并將用戶的本次訪問(wèn)直接交由底層的驅(qū)動(dòng)進(jìn)行處理。
再例如,用戶的訪問(wèn)請(qǐng)求中還可以攜帶用戶期望訪問(wèn)的文件或文件夾的名 稱,在文件系統(tǒng)過(guò)濾驅(qū)動(dòng)中查詢被設(shè)置為待過(guò)濾的文件和目錄的名稱,如果存 在用戶的訪問(wèn)請(qǐng)求中攜帶的用戶期望訪問(wèn)的文件或文件夾的名稱,則文件系統(tǒng)
過(guò)濾驅(qū)動(dòng)判定用戶的本次訪問(wèn)需要重定向,執(zhí)行步驟207;如果不存在,則文件 系統(tǒng)過(guò)濾驅(qū)動(dòng)判定用戶的本次訪問(wèn)不需要重定向,并將用戶的本次訪問(wèn)直接交 由底層的驅(qū)動(dòng)進(jìn)行處理。
這里需要說(shuō)明的是文件系統(tǒng)過(guò)濾驅(qū)動(dòng)屬于中間層驅(qū)動(dòng),因此I/O (Input/Output,輸入/輸出)請(qǐng)求包要經(jīng)過(guò)它的過(guò)濾后到達(dá)最底層設(shè)備驅(qū)動(dòng),進(jìn) 而被處理。文件系統(tǒng)過(guò)濾驅(qū)動(dòng)能夠監(jiān)視、檢查、修改、截獲所有的i/o請(qǐng)求包, 因此具有截獲和改變文件系統(tǒng)的操作能力,從而可以達(dá)到對(duì)本地文件請(qǐng)求重定 向到P2P網(wǎng)絡(luò)的目的。
步驟207:根據(jù)用戶的訪問(wèn)操作類型對(duì)用戶的訪問(wèn)進(jìn)行處理
如果用戶的本次訪問(wèn)是打開(kāi)、關(guān)閉或查詢文件信息等不是讀取文件內(nèi)容的 操作,文件系統(tǒng)過(guò)濾驅(qū)動(dòng)根據(jù)客戶端代理程序傳遞的元數(shù)據(jù)信息對(duì)本次訪問(wèn)直 接進(jìn)行處理,并按照用戶需要的形式返回給用戶;
如果用戶的本次訪問(wèn)是讀操作,文件系統(tǒng)過(guò)濾驅(qū)動(dòng)將該訪問(wèn)請(qǐng)求發(fā)送給客 戶端代理程序,由客戶端代理程序查詢本地的文件緩存,查詢?cè)摂?shù)據(jù)是否已經(jīng) 可用
如果是,則讀取緩存中的可用數(shù)據(jù)后發(fā)送給文件系統(tǒng)過(guò)濾驅(qū)動(dòng),由文件系 統(tǒng)過(guò)濾驅(qū)動(dòng)對(duì)用戶的本次訪問(wèn)進(jìn)行處理,并按照用戶需要的形式返回給用戶;
如果不是,則將用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,并通過(guò)網(wǎng)絡(luò)進(jìn)行P2P 的下載,獲取用戶所請(qǐng)求的數(shù)據(jù),并將下載的數(shù)據(jù)發(fā)送給文件系統(tǒng)過(guò)濾驅(qū)動(dòng), 由文件系統(tǒng)過(guò)濾驅(qū)動(dòng)完成相應(yīng)的處理,并按照用戶需要的形式返回給用戶。
這里需要說(shuō)明的是為了加速數(shù)據(jù)的獲取,可以同時(shí)從種子服務(wù)器和其它 客戶端那里下載數(shù)據(jù)。
通過(guò)文件系統(tǒng)訪問(wèn)重定向的方法,將P2P網(wǎng)絡(luò)上共享的文件以本地驅(qū)動(dòng)器 文件的形式呈現(xiàn)給用戶,并過(guò)濾、攔截對(duì)預(yù)先設(shè)定的需要進(jìn)行訪問(wèn)重定向的文 件及文件夾的訪問(wèn),將用戶的文件訪問(wèn)重定向到P2P網(wǎng)絡(luò),從而使用戶可以以 訪問(wèn)一般的本地驅(qū)動(dòng)器的文件的形式來(lái)訪問(wèn)P2P共享文件,使得不熟悉P2P技術(shù)的用戶也能方便地訪問(wèn)P2P網(wǎng)絡(luò),對(duì)用戶的使用習(xí)慣、便捷性以及應(yīng)用的透 明性而言,具有很大的優(yōu)勢(shì)。
實(shí)施例^「2
參見(jiàn)圖3,本發(fā)明實(shí)施例提供了一種共享文件的訪問(wèn)裝置,包括文件系統(tǒng) 過(guò)濾驅(qū)動(dòng)301;
文件系統(tǒng)過(guò)濾驅(qū)動(dòng)301包:^舌
截獲模塊301A,用于截獲用戶的訪問(wèn)請(qǐng)求,訪問(wèn)請(qǐng)求中攜帶用戶訪問(wèn)的文 件的元凝:據(jù)信息和用戶訪問(wèn)的#:作類型;
判斷模塊301B,用于根據(jù)用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)訪問(wèn) 請(qǐng)求進(jìn)行重定向;
處理模塊301C,用于如果判斷模塊301B的判斷結(jié)果為是,根據(jù)用戶訪問(wèn) 的操作類型對(duì)用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。
進(jìn)一步地,參見(jiàn)圖4,該裝置還包括客戶端代理302; 客戶端代理302包括
下載模塊302A,用于從已登陸的種子服務(wù)器中下載種子文件,種子文件攜 帶共享文件的元數(shù)據(jù)信息;
保存模塊302B,用于保存共享文件的元數(shù)據(jù)信息; 相應(yīng)地,文件系統(tǒng)過(guò)濾驅(qū)動(dòng)301還包括
查詢模塊301D,用于在保存模塊302B中保存的共享文件的元數(shù)據(jù)信息中, 查詢是否存在用戶訪問(wèn)的文件的元數(shù)據(jù)信息;
判定模塊301E,用于根據(jù)查詢模塊的查詢結(jié)果判斷訪問(wèn)請(qǐng)求是否需要重定
向;
如果存在,則判定對(duì)訪問(wèn)請(qǐng)求進(jìn)行重定向; 如果不存在,則判定不對(duì)訪問(wèn)請(qǐng)求進(jìn)^f亍重定向。 進(jìn)一步地,該文件系統(tǒng)過(guò)濾驅(qū)動(dòng)301還可以包4舌
創(chuàng)建模塊301F,用于根據(jù)共享文件的元數(shù)據(jù)信息,為共享文件創(chuàng)建目錄結(jié)構(gòu)。
其中,文件系統(tǒng)過(guò)濾驅(qū)動(dòng)301中的判定模塊301E,具體包括
查詢單元,用于當(dāng)用戶訪問(wèn)的操作類型為讀操作時(shí),查詢本地的文件緩存中是否有可用數(shù)據(jù);
獲取單元,用于當(dāng)查詢單元的查詢結(jié)果為有時(shí),從文件緩存中獲取可用數(shù)
據(jù);當(dāng)查詢單元的查詢結(jié)果為無(wú)時(shí),從伙伴對(duì)伙伴P2P網(wǎng)絡(luò)上獲取可用數(shù)據(jù); 返回單元,用于將獲取單元獲取到的可用數(shù)據(jù)返回給用戶。 其中,當(dāng)查詢單元的查詢結(jié)果為無(wú)時(shí),獲取單元具體用于 將用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,通過(guò)網(wǎng)絡(luò)進(jìn)行P2P的下載,獲取
可用數(shù)據(jù)。
具體的,文件系統(tǒng)過(guò)濾驅(qū)動(dòng)301的具體實(shí)現(xiàn)可以為
文件過(guò)濾驅(qū)動(dòng)程序的入口點(diǎn)是DriverEntry函數(shù),這個(gè)函數(shù)在驅(qū)動(dòng)中的地位 相當(dāng)于C程序中的main()函數(shù)。當(dāng)驅(qū)動(dòng)被加載時(shí),會(huì)從DriverEntry開(kāi)始執(zhí)行, 直到DriverEntry返回后,驅(qū)動(dòng)才開(kāi)始正常工作,對(duì)IRP進(jìn)行分類處理。因此, DriverEntry函數(shù)中主要是一些全局變量的初始化和驅(qū)動(dòng)本身的設(shè)置。
DriverEntry有兩個(gè)參數(shù) 一、參數(shù)DriverObject,是系統(tǒng)在加載過(guò)濾驅(qū)動(dòng)時(shí) 分配的;二、參數(shù)RegisteryPath是用于記錄過(guò)濾驅(qū)動(dòng)相關(guān)參數(shù)的注冊(cè)表路徑。 兩個(gè)參數(shù)都由系統(tǒng)分配并通過(guò)這兩個(gè)參數(shù)傳遞給DriverEntry,無(wú)需用戶傳入。
驅(qū)動(dòng)對(duì)象DriverObject擁有一組分派函數(shù)指針,稱為dispatch functions。不 同功能的過(guò)濾驅(qū)動(dòng)僅僅是分派函數(shù)實(shí)現(xiàn)的不同。
首先,DriverEntry默認(rèn)將所有IRP的分派函數(shù)都指定為SfPassThrough,這 個(gè)函數(shù)的定義是將IRP原封不動(dòng)的發(fā)送到下層驅(qū)動(dòng);
接著,為需要特別處理的IRP指定分派函數(shù),完成不同的處理功能。
例如指定分派函數(shù)SfCreate來(lái)處理Create IRP,指定分派函數(shù)SfRead來(lái) 處理Read IRP,指定分派函數(shù)SfQuerylnfo來(lái)處理Query Info IRP等等。未特別 指定分派函數(shù)的IRP,用默認(rèn)分派函數(shù)SfPassThrough處理。
根據(jù)需要在分派函數(shù)中處理各種IRP請(qǐng)求,主要方式有
(a) 調(diào)用IoSkipCurrentlrpStackLocation和IoCallDriver,將IRP原去于不動(dòng)的發(fā) 送到下一層驅(qū)動(dòng)。這種方式用來(lái)處理不符合過(guò)濾條件的IRP。
(b) 調(diào)用IoCompleteRequest完成這個(gè)IRP,不發(fā)送到下一層驅(qū)動(dòng),然后返回 成功狀態(tài)STATUS—SUCCESS;這種方式用來(lái)處理符合過(guò)濾條件的Read/Quey Info/ Directory Control IRP。(c) 調(diào)用IoCompleteRequest完成這個(gè)IRP,不發(fā)送到下一層驅(qū)動(dòng),然后返回 某種失敗狀態(tài)(非STATUS—SUCCESS,有4艮多種失敗的類型)。
(d) 修改這個(gè)IRP中的某些域,再發(fā)送到下一層驅(qū)動(dòng)。
IOCTL—USERMESSAGE用于客戶端代理程序與驅(qū)動(dòng)之間的數(shù)據(jù)溝通。一般 情況下調(diào)用DeviceIoControl,輸出參數(shù)為空,只能實(shí)現(xiàn)客戶端代理程序向驅(qū)動(dòng) 的單向數(shù)據(jù)傳輸,而驅(qū)動(dòng)向客戶端代理程序發(fā)出通知并傳輸數(shù)據(jù)是不能實(shí)現(xiàn)的。 而在IOCTL—USERMESSAGE的實(shí)現(xiàn)中,輸出參數(shù)不為空,DeviceIoControl的 最后一個(gè)參數(shù)(一個(gè)OVERLAPPED變量的指針)也不為空(MSDN中說(shuō)最后 一個(gè)OVERLAPPED參數(shù)應(yīng)該設(shè)置為空,但是實(shí)際上是可以利用它的)。
OVERLAPPED結(jié)構(gòu)可用于異步控制訪問(wèn)設(shè)備,結(jié)構(gòu)中有一個(gè)事件成員變量 event,客戶端代理程序清除這個(gè)事件的狀態(tài),然后將這個(gè)OVERLAPPED變量 以DeviceloControl的形式傳給驅(qū)動(dòng),等待這個(gè)Device Control IRP被完成(此時(shí) 事件event被置為signaled);驅(qū)動(dòng)將客戶端代理程序發(fā)出的Device Control IRP 的狀態(tài)置為pending,并將它們存入一個(gè)先入先出的隊(duì)列;當(dāng)過(guò)濾到文件或目錄、 需要通知客戶端代理程序時(shí),驅(qū)動(dòng)填充這個(gè)Device Control IRP的輸出參數(shù),再 完成這個(gè)IRP (這時(shí)事件event會(huì)自動(dòng)被置為singaled ),客戶端代理程序立即得 到通知,即可從輸出參數(shù)地址處讀出驅(qū)動(dòng)輸出的數(shù)據(jù)。換句話說(shuō),客戶端代理 程序與驅(qū)動(dòng)的互傳數(shù)據(jù)都是通過(guò)DeviceloControl完成的,客戶端代理程序給驅(qū) 動(dòng)的數(shù)據(jù)通過(guò)DeviceloControl()的輸入?yún)?shù)來(lái)實(shí)現(xiàn),驅(qū)動(dòng)給客戶端代理程序的數(shù) 據(jù)通過(guò)DeviceloControl()的輸出參數(shù)來(lái)實(shí)現(xiàn)。
在過(guò)濾驅(qū)動(dòng)中,動(dòng)態(tài)維護(hù)著一個(gè)很重要的Device Control IRP隊(duì)列,隊(duì)列中 的IRP都是客戶端代理程序之前傳入但是卻尚未4皮完成的Device Control IRP, 它們的狀態(tài)都是pending。 一般而言,驅(qū)動(dòng)要實(shí)時(shí)通知客戶端代理程序并向代理 程序傳遞數(shù)據(jù),是辦不到的;而這個(gè)Device Control IRP隊(duì)列卻完全可以做到這 點(diǎn),因此此隊(duì)列對(duì)于整個(gè)系統(tǒng)的實(shí)現(xiàn)是至關(guān)重要的。
為了保證驅(qū)動(dòng)隨時(shí)都有可用的IRP在隊(duì)列中而不至于嚴(yán)重的阻塞,當(dāng)代理 程序啟動(dòng)的時(shí)候,會(huì)首先向驅(qū)動(dòng)發(fā)送一定數(shù)目(目前設(shè)為5000 )的Device Control IRP
對(duì)于過(guò)濾驅(qū)動(dòng)的分派函數(shù),這里以Create IRP的分派函凄t為例進(jìn)行說(shuō)明 Create IRP的分派函數(shù)是SfCreate。 Create IRP的作用是創(chuàng)建或打開(kāi)一個(gè)文件或目錄。在系統(tǒng)訪問(wèn)一個(gè)文件或目錄之前,首先會(huì)發(fā)出針對(duì)它的CreateIRP, 之后才是Query Info IRP。針對(duì)同一文件或目錄,可能發(fā)出多個(gè)Create IRP,它 們指向的文件對(duì)象地址可以不相等。Create IRP和Cleanup/Close IRP總是成對(duì)出 現(xiàn)的。
文件系統(tǒng)過(guò)濾驅(qū)動(dòng)都是以操作的文件的路徑作為過(guò)濾條件的,但是在過(guò)濾 到一般IRP(如查詢、設(shè)置、讀、寫)時(shí),查詢文件路徑確實(shí)很困難的,可能會(huì) 使系統(tǒng)進(jìn)入死鎖或者藍(lán)屏,而在Create IRP的分派函數(shù)中可以成功得到文件的設(shè) 備路徑,克服上述問(wèn)題
(a) 對(duì)于文件在Create IRP的分派函數(shù)中查詢文件全路徑;以它的文件對(duì) 象的地址作為鍵值,將它的文件路徑存入一個(gè)全局哈希表中;當(dāng)過(guò)濾其它IRP 時(shí),在哈希表中查詢文件對(duì)象地址,如果存在,則讀取出文件全路徑,與過(guò)濾 文件的路徑進(jìn)行比較。
(b) 對(duì)于目錄在Create IRP的分派函數(shù)中查詢目錄全^各徑,將文件對(duì)象地 址存入一個(gè)全局變量的數(shù)組中(設(shè)為A),其中,A[i]代表序號(hào)為i的過(guò)濾目錄的 文件對(duì)象地址。當(dāng)過(guò)濾其他IRP時(shí),首先在數(shù)組A中查找文件對(duì)象地址,如果 找到,即找到目錄的序號(hào),設(shè)為index。則目錄的路徑是過(guò)濾目錄名全局變量數(shù) 組的第index個(gè)。
Create IRP的分派函數(shù)的主要流程如附圖3。其中,設(shè)置完成例程的目的是 使下層驅(qū)動(dòng)在完成此Create請(qǐng)求之后,重新返回到此分派函數(shù)上下文中,此時(shí) 下層驅(qū)動(dòng)已經(jīng)將CREATE IRP中相應(yīng)的數(shù)據(jù)域填充好。
從下層驅(qū)動(dòng)返回后,調(diào)用函數(shù)ObQueryNameString查詢文件的設(shè)備全路徑, 這個(gè)調(diào)用返回的結(jié)果是設(shè)備名而不是盤符,形如
"\Device\HardDiskVolume l\MyDirectory\MyFile.Name,,。
調(diào)用ObQueryNameString得到文件名需要注意以下兩件事
(a) 必須在Create IRP完成之后(即完成例程返回之后)才可以調(diào)用 ObQueryNameString。如果在sfCreate函數(shù)的早期調(diào)用,只能得到文件的前半部 分設(shè)備路徑,而不能得到文件名,形如"\Device\HardDiskVolumel"。
(b) 只能在CREATE IRP和CLEANUP IRP的分派函數(shù)中調(diào)用 ObQueryNameString,否則將會(huì)使系統(tǒng)進(jìn)入死鎖。
得到文件全路徑之后,就要將它與過(guò)濾條件相比較,判斷是不是要過(guò)濾的
15如果是,則將它添加到哈希表中。在其它的IRP分派函數(shù)中是通過(guò)查詢哈 希表來(lái)獲得文件全路徑。因?yàn)橐唤M打開(kāi)/關(guān)閉的操作之間,文件對(duì)象的地址是不 變的,可用來(lái)作為哈希表的鍵值。查詢到文件路徑后,和全局變量中的過(guò)濾條 件做比較。
具體的,客戶端代理302實(shí)現(xiàn)與文件系統(tǒng)過(guò)濾驅(qū)動(dòng)301交互的方法可以為
在客戶端代理程序中使用了 P2P下載模塊來(lái)進(jìn)行數(shù)據(jù)的傳輸,其使用了 libtorrent庫(kù)的實(shí)現(xiàn)。
libtorrent是用C十+寫的BitTorrent庫(kù),遵/人BitTorrent協(xié)議。libtorrent客戶 端啟動(dòng)時(shí)需先新建一個(gè)session實(shí)例,session執(zhí)行監(jiān)聽(tīng)等梯:作。在讀入一個(gè)torrent 種子文件后,通過(guò)解析文件、新建任務(wù)之后,session中便加入了一個(gè) torrent—handle結(jié)構(gòu),這個(gè)torrent—handle 乂十應(yīng)著^皮讀入解沖斤的torrent種子,用來(lái) 完成一個(gè)下載任務(wù)。
torrent_handle結(jié)構(gòu)提供了對(duì)任務(wù)下達(dá)命令、查詢?nèi)蝿?wù)是否完成、獲取任務(wù) "f言息'的才妄口 , t匕^口 pause , resume , set—upload—limit, set—download—limit , force一reannounce, get—torrent—info等,寸旦是不能通過(guò)torrent—handle對(duì)下載過(guò)牙呈 的細(xì)節(jié)進(jìn)行查詢和控制,這些是內(nèi)部使用的,由torrent類來(lái)負(fù)責(zé)。
torrent類負(fù)責(zé)根據(jù)下載策略選擇接所要下載的分塊。同時(shí),它還可以對(duì)分塊 單獨(dú)進(jìn)行讀寫操作,也負(fù)責(zé)寫回已經(jīng)下載完的分塊。在下載過(guò)程中,它還負(fù)責(zé) 和鄰居結(jié)點(diǎn)進(jìn)行交互,交換分塊信息,進(jìn)行相互下載。
下面是libtorrent中幾個(gè)重要的類,在實(shí)現(xiàn)接口的過(guò)程中用到了這些類的實(shí)例。
class session位于session.hpp/cpp, 它負(fù)責(zé)管理所有的torrent下載任務(wù)。
class torrent位于torrent.hpp/cpp,它負(fù)責(zé)維護(hù)某一下載任務(wù),包括與鄰結(jié)點(diǎn) 的交互,下載,做種子等等。
struct torrent—handle ^f立于torrent—handle.hpp/cpp ,它是夕卜吾卩i周用6勺才妄口 ,通 過(guò)torrent—handle可以實(shí)現(xiàn)對(duì)某一下載任務(wù)的控制和訪問(wèn)。
class torrent—info ^f立于torrent—info.hpp/cpp , 它維護(hù)了 torrent "f壬務(wù)的4言息, 通過(guò)訪問(wèn)它可以得到任務(wù)信息,比如是否為多文件,哈希值是多少等等。class piece_picker 4立于piece_picker.hpp/cpp piece, 它里面主要是只十下載的 順序管理,以及下載策略的選擇。其中,下載策略是在函數(shù) piece_picker: :files—checked()中進(jìn)行設(shè)置。
class storage, class piece—manager位于storage.hpp/cpp,這兩個(gè)類負(fù)責(zé)分塊 的寫入和讀耳X。
文件系統(tǒng)過(guò)濾驅(qū)動(dòng)在截獲對(duì)文件的訪問(wèn)請(qǐng)求之后,就會(huì)通過(guò)客戶端代理程 序調(diào)用P2P模塊來(lái)獲取遠(yuǎn)程文件。如果該文件已經(jīng)下載了,則直接讀取本地緩 存的文件。當(dāng)然,本地緩存文件作為整個(gè)系統(tǒng)的P2P網(wǎng)絡(luò)的一部分,也可以向 其它用戶提供下載服務(wù)。
通過(guò)文件系統(tǒng)訪問(wèn)重定向的方法,將P2P網(wǎng)絡(luò)上共享的文件以本地驅(qū)動(dòng)器 文件的形式呈現(xiàn)給用戶,并過(guò)濾、攔截對(duì)預(yù)先設(shè)定的需要進(jìn)行訪問(wèn)重定向的文 件及文件夾的訪問(wèn),將用戶的文件訪問(wèn)重定向到P2P網(wǎng)絡(luò),/人而4吏用戶可以以 訪問(wèn)一般的本地驅(qū)動(dòng)器的文件的形式來(lái)訪問(wèn)P2P共享文件,使得不熟悉P2P技 術(shù)的用戶也能方便地訪問(wèn)P2P網(wǎng)絡(luò),對(duì)用戶的使用習(xí)慣、便捷性以及應(yīng)用的透 明性而言,具有很大的優(yōu)勢(shì)。
本發(fā)明實(shí)施例可以利用軟件實(shí)現(xiàn),相應(yīng)的軟件程序可以存儲(chǔ)在可讀取的存 儲(chǔ)介質(zhì)中,例如,路由器的硬盤、緩存或光盤中。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的 精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的 保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種共享文件的訪問(wèn)方法,其特征在于,包括截獲用戶的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求中攜帶所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息和所述用戶訪問(wèn)的操作類型;根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向;如果是,根據(jù)所述用戶訪問(wèn)的操作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。
2、 如權(quán)利要求1所述的共享文件的訪問(wèn)方法,其特征在于,在所述截獲用 戶的訪問(wèn)請(qǐng)求之前,所述方法還包括從已登陸的種子服務(wù)器中下載種子文件,所述種子文件攜帶共享文件的元 數(shù)據(jù)信息;保存所述共享文件的元lt據(jù)信息;相應(yīng)地,所述根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述訪 問(wèn)請(qǐng)求進(jìn)行重定向,具體包括在保存的所述共享文件的元數(shù)據(jù)信息中,查詢是否存在所述用戶訪問(wèn)的文 件的元數(shù)據(jù)信息;如果存在,則判定對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向;如果不存在,則判定不對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向。
3、 如權(quán)利要求2所述的共享文件的訪問(wèn)方法,其特征在于,在所述保存所 述共享文件的元數(shù)據(jù)信息之后,所述方法還包括根據(jù)已保存的所述共享文件的元數(shù)據(jù)信息,為所述共享文件創(chuàng)建目錄結(jié)構(gòu)。
4、 如權(quán)利要求1所述的共享文件的訪問(wèn)方法,其特征在于,所述根據(jù)所述 用戶訪問(wèn)的操:作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理,具體包括當(dāng)所述用戶訪問(wèn)的操作類型為讀操作時(shí),查詢本地的文件緩存中是否有可 用數(shù)據(jù);如果有,則從所述文件緩存中獲取所述可用數(shù)據(jù);如果沒(méi)有,則從伙伴對(duì)伙伴P2P網(wǎng)絡(luò)上獲取所述可用數(shù)據(jù); 將所述可用數(shù)據(jù)返回給所述用戶。
5、 如權(quán)利要求4所述的共享文件的訪問(wèn)方法,其特征在于,所述從P2P網(wǎng) 絡(luò)上獲取所述可用數(shù)據(jù),具體包括將所述用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,通過(guò)網(wǎng)絡(luò)進(jìn)行P2P的下載, 獲取所述可用數(shù)據(jù)。
6、 一種共享文件的訪問(wèn)裝置,其特征在于,包括文件系統(tǒng)過(guò)濾驅(qū)動(dòng); 所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)包括截獲模塊,用于截獲用戶的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求中攜帶所述用戶訪問(wèn) 的文件的元數(shù)據(jù)信息和所述用戶訪問(wèn)的操作類型;判斷模塊,用于根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述 訪問(wèn)請(qǐng)求進(jìn)行重定向;處理模塊,用于如果所述判斷模塊的判斷結(jié)果為是,根據(jù)所述用戶訪問(wèn)的 操作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。
7、 如權(quán)利要求6所述的共享文件的訪問(wèn)裝置,其特征在于,所述裝置還包 括客戶端代理;所述客戶端代理包括下載模塊,用于從已登陸的種子服務(wù)器中下載種子文件,所述種子文件攜 帶共享文件的元數(shù)據(jù)信息;保存模塊,用于保存所述共享文件的元數(shù)據(jù)信息; 相應(yīng)地,所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)還包括查詢模塊,用于在所述保存才莫塊保存的所述共享文件的元數(shù)據(jù)信息中,查 詢是否存在所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息;判定模塊,用于根據(jù)所述查詢模塊的查詢結(jié)果判斷所述訪問(wèn)請(qǐng)求是否需要 重定向;如果存在,則判定對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向; 如果不存在,則判定不對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向。
8、 如權(quán)利要求7所述的共享文件的訪問(wèn)裝置,其特征在于,所述文件系統(tǒng)過(guò)濾驅(qū)動(dòng)還包括創(chuàng)建模塊,用于根據(jù)所述客戶端代理中的所述保存模塊保存的所述共享文 件的元數(shù)據(jù)信息,為所述共享文件創(chuàng)建目錄結(jié)構(gòu)。
9、 如權(quán)利要求6所述的共享文件的訪問(wèn)裝置,其特征在于,所述文件系統(tǒng) 過(guò)濾驅(qū)動(dòng)中的判定模塊,具體包括查詢單元,用于當(dāng)所述用戶訪問(wèn)的操作類型為讀操作時(shí),查詢本地的文件 緩存中是否有可用數(shù)據(jù);獲取單元,用于當(dāng)所述查詢單元的查詢結(jié)果為有時(shí),從所述文件緩存中獲 取所述可用數(shù)據(jù);當(dāng)所述查詢單元的查詢結(jié)果為無(wú)時(shí),從伙伴對(duì)伙伴P2P網(wǎng)絡(luò) 上獲取所述可用數(shù)據(jù);返回單元,用于將所述獲取單元獲取到的所述可用數(shù)據(jù)返回給所述用戶。
10、 如權(quán)利要求9所述的共享文件的訪問(wèn)裝置,其特征在于,當(dāng)所述查詢 單元的查詢結(jié)果為無(wú)時(shí),所述獲取單元具體用于將所述用戶的訪問(wèn)請(qǐng)求轉(zhuǎn)換為P2P文件請(qǐng)求,通過(guò)網(wǎng)絡(luò)進(jìn)行P2P的下載, 獲取所述可用數(shù)據(jù)。
全文摘要
本發(fā)明公開(kāi)了一種共享文件的訪問(wèn)方法和裝置,屬于計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)與應(yīng)用技術(shù)領(lǐng)域。所述方法包括截獲用戶的訪問(wèn)請(qǐng)求,所述訪問(wèn)請(qǐng)求中攜帶所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息和所述用戶訪問(wèn)的操作類型;根據(jù)所述用戶訪問(wèn)的文件的元數(shù)據(jù)信息,判斷是否對(duì)所述訪問(wèn)請(qǐng)求進(jìn)行重定向;如果是,根據(jù)所述用戶訪問(wèn)的操作類型對(duì)所述用戶的訪問(wèn)請(qǐng)求進(jìn)行處理。所述裝置包括文件系統(tǒng)過(guò)濾驅(qū)動(dòng)。通過(guò)過(guò)濾并攔截對(duì)預(yù)先設(shè)定的需要進(jìn)行訪問(wèn)重定向的文件及文件夾的訪問(wèn),將用戶的文件訪問(wèn)重定向到P2P網(wǎng)絡(luò),從而使用戶以訪問(wèn)一般的本地驅(qū)動(dòng)器的文件的形式來(lái)訪問(wèn)P2P共享文件,使得不熟悉P2P技術(shù)的用戶也能方便地訪問(wèn)P2P網(wǎng)絡(luò)的共享文件。
文檔編號(hào)H04L29/08GK101459697SQ20091007610
公開(kāi)日2009年6月17日 申請(qǐng)日期2009年1月7日 優(yōu)先權(quán)日2009年1月7日
發(fā)明者張悠慧, 蘇格林, 路美娟 申請(qǐng)人:清華大學(xué)