盡力2~3周發佈一個版本,我此次也沒有失言。這段時間內,我仿照QQ的微雲功能,在GG中增長了網盤的功能,並且,我還自創了一個QQ沒有的新的功能:遠程磁盤。正如遠程桌面同樣,遠程磁盤容許咱們像訪問本地磁盤同樣來訪問在線的其它用戶的磁盤。html
(1)網盤:在服務端爲每一個用戶分配一個網盤,用戶經過客戶端能夠訪問本身的網盤。就像QQ的微雲同樣。數據庫
(2)遠程磁盤:任何一個在線用戶,均可以訪問其它在線用戶的磁盤(先要通過對方的贊成)。後端
(3)不管是網盤、仍是遠程磁盤,都支持:上傳/下載/刪除/複製/剪切/粘貼 文件、新建文件夾、重命名。分佈式
(4)在GG的實現中,網盤和遠程磁盤公用的是同一個組件NDiskBrowser。ide
廢話很少說,仍是先上圖。新功能入口按鈕:測試
上圖中有三處標記:1.按鈕可進入 個人網盤;2.按鈕可進入 好友的遠程磁盤;3.顯示和好友之間的P2P通道的狀態spa
下圖是網盤截圖:debug
磁盤訪問請求截圖:3d
進入遠程磁盤(就像打開本身本地硬盤同樣):orm
遠程磁盤操做:
雖然提供了源代碼,可是,我仍是想將主要的思路列一下,這樣,你們理解起源碼來,會節省更多的時間。
1. 該版本增長了一個新的項目GGLib。
我打算將GGLib做爲一個可複用的類庫,這樣它就能夠在GG之外其它的項目中使用。目前,GGLib已經包含了修改後的文件傳輸顯示控件FileTransferingViewer以及網盤組件。
2. 網盤組件:位於GGLib項目的NDisk文件夾下,雖然網盤組件的底層仍然基於ESFramework提供的文件傳輸功能,可是,其實現仍是比較複雜的。
(1)經過網盤組件,既能夠訪問網盤,也能夠訪問另外一個在線用戶的磁盤。
(2)目前版本的GG服務端提供的是一個簡單的網盤功能,其在運行目錄下的NetworkDisk文件夾下,爲須要的用戶新建一個文件夾(以UserID命名)做爲用戶的網盤。
(3)若是須要,咱們能夠從新實現GGLib.NDisk.Server.INDiskPathManager接口,好比,咱們可使用分佈式文件系統,做爲網盤的後端存儲。
(4)普通文件傳送和網盤文件傳送,都使用了ESFramework的文件傳送功能,在程序中,我是經過TransferingProject的Comment屬性來區分兩者的(普通文件的Comment爲null,網盤則不爲null)。
(5)普通文件和網盤文件,也都使用了FileTransferingViewer來顯示文件傳送進度,我改寫了原始的FileTransferingViewer,爲其Initialize增長了一個filter參數,使其能夠過濾掉無關的文件傳送事件。
(6)進入遠程磁盤時,默認進入的是「個人電腦」的內容 -- 列出全部分區、包括光盤、U盤等,咱們能夠經過修改程序來改變這一行爲,好比,磁盤的主人能夠控制本身只容許來訪者訪問哪個分區或目錄。
(7)基於(6),換個方向,咱們就能夠實現磁盤共享或目錄共享的功能。
3. 數據庫:有不少朋友問數據庫怎麼弄,實際上GG的目前版本尚未用到數據庫(後續高級版本會增長),全部的信息都只是在內存中,因此,目前版本的GG作了一些假設:
(1)用戶登陸賬號隨意,但必須爲數字組;密碼可隨意輸入。
(2)全部的在線用戶都是好友。
4. 語音視頻:也有不少朋友問語音視頻設備的工做怎麼不正常,這個能夠直接參考OMCS官方文檔:攝像頭、麥克風、揚聲器、設備測試。
5. GG使用了最新版本的SkinForm,若是有關於SkinForm的問題,能夠直接聯繫個人好友 威廉喬克斯_汀。
有了遠程磁盤點子以後,我又產生了一個新的點子,這個新點子的孕育過程是這樣的:
我常常晚上在家加班,因此,下班的時候,我就用U盤把項目文檔拷回去,在家裏的電腦上工做,完畢後,再把更新的文檔拷回U盤,次日再帶到公司覆蓋公司電腦上舊的文檔。相信有些朋友也有相似的經歷,用U盤拷來拷去很麻煩。固然,若是不是保密性的要求,咱們也可使用網盤。不管是U盤仍是網盤,都須要通過「中間站」轉一道,不夠直接。
若是下面的情形可以實現該多好:下班的時候,我在公司的電腦上可以直接訪問家裏電腦的磁盤,把須要的文檔傳送到指定的目錄,晚上回去就能夠繼續工做,完畢後,在家裏的電腦上又能夠直接訪問公司電腦的磁盤,把更新後的文檔再傳送回去。這樣就夠直接了,也不須要U盤了。
我想在GG中增長這樣的功能,那麼,該如何實現了?個人初步方案以下:增長一個新的項目叫GG受控端,受控端不須要主界面,只要一個托盤,表示其在運行。在家裏的電腦上,我用賬號514330登陸GG受控端,到公司後,用514330正常登陸GG,在GG的主界面上,就能夠列出全部在線的受控端,點擊其中一個,就能夠訪問其磁盤,這就是已有的GG的遠程磁盤的功能了。當前,前提是受控端電腦必需是開啓的而且是聯網的。
關於這個功能,你們有什麼好的想法,能夠留言告訴我。
下載最新版本,請轉到這裏。
特別說明:爲了減小壓縮包的大小(博客園最大上傳文件只能爲10M,這個限制有點過了),我把debug目錄清空了,你們從新編譯生產後,請將Dlls文件夾下的三個dll(VideoEngine.dll,VideoEngineCore.dll,AudioEngineCore.dll)拷貝到運行那個目錄下,纔可正常啓動程序的。
GG最新進展總覽連接:可在廣域網部署運行的QQ高仿版 -- GG2013總覽
我會繼續努力爭取2~3個星期發佈一個新版本,使GG慢慢成熟起來。
你們有什麼問題和建議,能夠留言,也能夠發送email到我郵箱:ggim2013@163.com。
若是你以爲還不錯,請粉我,順便再頂一下啊,呵呵