一種文件傳輸系統及方法
【技術領域】
[0001 ]本發明涉及互聯網技術領域,特別涉及一種文件傳輸系統及方法。
【背景技術】
[0002]隨著網絡視頻技術的發展,有多家視頻提供者可以為用戶提供視頻源,如優酷、愛奇藝、搜狐等,這些網站主要基于Flash技術且通過專用的服務器向用戶提供可供下載的文件。為了降低帶寬成本,目前各大網站相繼開始采用通過用戶之間分享數據的P2P(Peer topeer,對等連接)技術,以降低專用服務器的帶寬消耗,從而節省成本。但是,Flash技術與傳統的基于BT模式的P2P技術并不兼容,只有通過網頁插件的方式才可以實現,而大多數用戶并不希望安裝網頁插件,因此,Adobe公司開發了一種能實現了Flash技術與P2P技術相互融合的協議,即RTMFP(Real Time Media Flow Protocol,實時多媒體流協議)ATMFP協議是Adobe公司開發的一套通信協議,該協議可以讓使用Adobe Flash Player的終端用戶之間進行直接通信。因為符合RTMFP協議的文件是在各終端用戶之間共享,而無需向服務器所取文件,所以此方案很適合于大范圍的部署。RTMFP因為采用了 UDP也提升了傳送的速度。
[0003]然而,該傳輸方式還存在一些缺點。例如在P2P網絡中,將客戶端分為需要下載文件的下載客戶端以及可以提供文件的上傳客戶端,當下載客戶端向上傳客戶端發送文件請求時,上傳客戶端會根據文件請求去查找自身的本地文件,如果上傳客戶端只有所請求的部分文件,則該上傳客戶端就會放棄應答,下載客戶端只好重新請求別的上傳客戶端,直至找到一個擁有完整文件的上傳客戶端。由于下載客戶端所請求的文件往往來自多個上傳客戶端,因此采用目前的文件傳輸方式易造成下載客戶端獲得文件的時間較長,無法滿足用戶需求。
【發明內容】
[0004]本發明所解決的技術問題在于提供一種文件傳輸系統,應用于基于RTMFP協議的P2P網絡通信中,該文件傳輸系統有利于提高下載客戶端從相應的上傳客戶端下載所需文件的速度。
[0005]—種文件傳輸系統,包括若干上傳客戶端、若干下載客戶端、控制服務器、以及索引服務器,其中:
[0006]所述上傳客戶端存儲有至少一個分塊文件,所述上傳客戶端用于接收并響應所述下載客戶端發送的文件請求,將其所存儲的與該文件請求相對應的分塊文件發送給所述下載客戶端,所述分塊文件由一個整體文件按照預設的方法拆分而成;
[0007]所述下載客戶端用于向所述索引服務器發送索引請求,所述索引請求包括目標文件的URL,并接收所述索引服務器的反饋信息,所述反饋信息包括存儲有該目標文件的至少一個分塊文件的上傳客戶端的地址;所述下載客戶端根據該反饋信息向對應的所述上傳客戶端發送文件請求,而后接收由所述至少一個上傳客戶端發送而來的分塊文件,并按照預設的方法將該分塊文件合并為一個整體文件;
[0008]所述控制服務器分別與所述上傳客戶端和所述下載客戶端連接,用于建立所述上傳客戶端和所述下載客戶端之間的連接;
[0009]所述索引服務器分別與所述上傳客戶端和所述下載客戶端連接,所述索引服務器保存有所述上傳客戶端、所述下載客戶端的地址以及各上傳客戶端、下載客戶端所存儲的文件信息,該文件信息至少包括文件的URL;所述索引服務器還用于接收并響應所述下載客戶端發送而來的索引請求,將所述反饋信息發送給所述下載客戶端。
[0010]進一步的,所述各上傳客戶端、各下載客戶端還按預設的時間間隔向所述索引服務器發送各自的地址以及各自所存儲的文件的URL。
[0011]進一步的,分塊文件設置有明確其順序的標識,所述上傳客戶端、下載客戶端將自身存儲的分塊文件的標識發送給所述索引服務器。
[0012]本發明還提供了一種應用上述文件傳輸系統的文件傳輸方法。為解決上述技術問題,本發明采用如下所述的技術方案。
[0013]一種文件傳輸方法,包括以下步驟:
[0014]下載客戶端向索引服務器發送索引請求,所述索引請求包括目標文件的URL;
[0015]所述索引服務器接收并響應所述下載客戶端發送而來的索引請求,向所述下載客戶端發送反饋信息,所述反饋信息包括存儲有該目標文件的至少一個分塊文件的上傳客戶端的地址;
[0016]下載客戶端接收所述反饋信息;
[0017]下載客戶端通知控制服務器建立與目標上傳客戶端之間的連接;
[0018]所述控制服務器建立該下載客戶端和目標上傳客戶端之間的連接;
[0019]下載客戶端向至少一個目標上傳客戶端發送文件請求;
[0020]該至少一個目標上傳客戶端接收下載客戶端的文件請求;
[0021]該上傳客戶端按照預設的方法將文件請求相對應的分塊文件發送給所述下載客戶端;
[0022]所述下載客戶端接收至少一個上傳客戶端發送而來的分塊文件,并按照預設的方法合并分塊文件。
[0023]進一步的,該上傳客戶端將與文件請求相對應的分塊文件發送給所述下載客戶端的方法如下:
[0024]上傳客戶端將其存儲的分塊文件的標識發送給下載客戶端;
[0025]下載客戶端判斷是否需要該分塊文件并告知相應的上傳客戶端;
[0026]下載客戶端若需要所述上傳客戶端存儲的一個或多個分塊文件,則發送一個需求信息給相應的上傳客戶端;
[0027]該上傳客戶端接收并響應該需求信號,將一個或者多個分塊文件發送該下載客戶端。
[0028]進一步的,下載客戶端若不需要所述上傳客戶端存儲的一個或多個分塊文件,則發送一個不需求的信息給相應的上傳客戶端,然后通知所述控制服務器與下一個目標上傳客戶端建立連接。
[0029]進一步的,合并分塊文件時,判斷當前分塊文件與已下載的其他分塊文件是否存在相鄰關系,若存在相鄰關系,則可先合并。
[0030]本發明的有益技術效果在于:本發明的下載客戶端可以接收來自于多個上傳客戶端的分塊文件,并將這些分塊文件合并成一個整體文件,因此,相比于現有技術,該下載客戶端的文件獲取時間更短,可以極大提升用戶體驗。
【附圖說明】
[0031]圖1是本發明一些實施例中文件傳輸系統的網絡連接示意圖。
[0032]圖2是本發明在一些實施例中的工作流程示意圖。
【具體實施方式】
[0033]為使本領域的普通技術人員更加清楚地理解本發明的目的、技術方案和優點,以下結合附圖和實施例對本發明做進一步的闡述。
[0034]本發明的文件傳輸系統,應用于基于RTMFP協議的P2P網絡通信中,參考圖1所示,在本發明的一些實施例中,該文件傳輸系統包括若干上傳客戶端20、若干下載客戶端10、控制服務器40以及索引服務器30。
[0035]所述上傳客戶端20存儲有至少一個分塊文件,所述上傳客戶端20用于接收并響應所述下載客戶端10發送的文件請求,將其所存儲的與該文件請求相對應的分塊文件發送給所述下載客戶端10,所述分塊文件由一個整體文件按照預設的方法拆分而成。例如,將一個101MB的數據按照2MB為一個塊進行拆分,可以拆分為51個分塊文件,最后一個分塊文件為IMB。在一個整體文件被拆分為各個分塊時,會為各個分塊文件增加標識以明確其順序。對于數據很小的整體文件,可以認為就是一個分塊文件。
[0036]所述下載客戶端10用于向所述索引服務器30發送索引請求,所述索引請求包括目標文件的URL(統一資源定位符,互聯網上的每個文件都有一個唯一的URL,可以指出文件的位置),并接收所述索引服務器30的反饋信息,所述反饋信息包括存儲有該目標文件的至少一個分塊文件的上傳客戶端20的地址;所述下載客戶端10根據該反饋信息向對應的所述上傳客戶端20發送文件請求,而后接收由所述至少一個上傳客戶端20發送而來的分塊文件,并按照預設的方法將該分塊文件合并為一個整體文件。
[0037]所述控制服務器40分別與所述上傳客戶端20和所述下載客戶端10連接,用于建立所述上傳客戶端20和所述下載客戶端10之間的連接。
[0038]所述索引服務器30分別與所述上傳客戶端20和所述下載客戶端10連接,所述索引服務器30保存有所述上傳客戶端20、所述下載客戶端10的地址以及各上傳客戶端20、下載客戶端10所存儲的文件信息,該文件信息至少包括文件(包括一些分塊文件或整體文件)的URL;所述索引服務器30還用于接收并響應所述下載客戶端10發送而來的索引請求,并將反饋信息發送給所述下載客戶端10。
[0039]本發明的下載客戶端10可以接收來自于多個上傳客戶端20的分塊文件,并將這些分塊文件合并成一個整體文件,因此,相比于現有技術,該下載客戶端10的文件獲取時間更短,可以極大提升用戶體驗。
[0040]在P2P網絡中,下載客戶端10和上傳客戶端20是對等的,由于網絡中幾乎實時都在發生文件的傳輸且各客戶端的IP地址也有可能變化,因此上傳客戶端20、下載客戶端10還需按一定的時間間隔向所述索引服務器30發送各自的地址以及各自所存儲的文件的URL等相關信息。如果所述索引服務器30的內存足夠,各上傳客戶端20、下載客戶端10也可將自身存儲的分塊文件的標識發送給所述索引服務器30。
[0041]本發明還提供了一種應用上述文件傳輸系統的文件傳輸方法,在一些實施例中,如圖2所示,下載客戶端10包括下載客戶端A,上傳客戶端20包括上傳客戶端B、上傳客戶端C,該文件傳輸方法包括以下步驟:
[0042]SI,下載客戶端10向索引服務器30發送索引請求,所述索引請求包括目標文件的URL0
[0043]具體的,所述下載客戶端A希望求得電影“泰冏”,以電影“泰冏”的URL信息向索引服務器30發送索引請求。
[0044]S2,索引服務器30接收并響應所述下載客戶端10發送而來的索引請求,向所述下載客戶端10