<wbr id="ede8e"></wbr><bdo id="ede8e"><var id="ede8e"><optgroup id="ede8e"></optgroup></var></bdo>
    1. <sub id="ede8e"></sub>
    2. <sub id="ede8e"></sub>
    3. 18禁无遮挡啪啪无码网站,真人无码作爱免费视频,2018年亚洲欧美在线v,国产成人午夜一区二区三区 ,亚洲精品毛片一区二区,国产在线亚州精品内射,精品无码国产污污污免费,国内少妇人妻偷人精品
      首頁 > 文章中心 > 正文

      P2P文件系統

      前言:本站為你精心整理了P2P文件系統范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

      摘要:系統QtP2Pfile-sharingSystem(QPS)是利用Qt開發的P2P文件共享系統。QPS采用P2P中的混合模式,此模式結合了集中目錄式和純分布式兩者的優點,在實現上具有簡易性,在共享度上具有很強的擴展性。QPS的最大特點是加入了策略。這種策略能限制一些用戶只下載而不共享資源的行為。策略的引入是為了鼓勵用戶與其他人分享自己的資源,而不僅僅是索取。入策略的QPS不僅能比較有效的限制只下載不分享的行為,而且對系統的壽命也有相當程度的提高。

      關鍵詞:文件共享;P2P;策略;Qt

      C/S式架構造就了一批著名的門戶網站,如雅虎,新浪等。這些網站容易受到黑客的親睞后果是服務崩潰。C/S式架構只有一個服務器或服務機群,服務器一旦崩潰,它提供的服務也將停止。而P2P式架構卻正好相反,它沒有服務器(相對C/S架構而言)或服務器是分布的,一個服務器崩潰了,其他的服務器照樣能提供服務。這種架構能有效的抵抗DDOS攻擊,它的安全性有很可靠的保障。另外,采用P2P式架構的網絡資源共享系統不但大大的減輕了單個服務器的負擔,而且也提高了很大的安全性。人們也可以通過這種架構建立自己的信息天地,與其他的人分享自己的資源。

      1系統設計實現的重點與難點

      系統QPS在Linux上用Qt開發,系統設計原理和策略都并不復雜,但這不代表系統的實現也是簡單的。對于系統的整個實現來說,有三個地方是最重要的,也是比較難的。先介紹系統運行流程:

      (1)Group-leaderpeer運行,并連接上其他的任意某個Group-leaderpeer;

      (2)Ordinarypeer連接(登陸)某個Group-leaderpeer,并把所資源表發送個Group-leaderpeer;

      (3)Group-leaderpeer將已連接的其他PC的資源表發送給此ordinarypeer;

      (4)Ordinarypeer瀏覽資源并選擇下載或則向Group-leaderpeer發送資源搜索請求;

      (5)Group-leaderpeer將資源表中符合搜索的資源所在ordinarypeer的IP發給請求ordinarypeer,同時向其他以連接的Group-leaderpeer發送搜索請求,其他的Group-leaderpeer將資源IP反饋,收到反饋后再發送個搜索ordinarypeer;

      (6)Ordinarypeer從獲得的資源表中選擇下載,即與另一個ordinarypeer建立連接,下載完畢后斷開連接。

      從上面的過程可以看出,系統共有三個通信鏈路,分別是:

      (1)Group-leaderpeer與Group-leaderpeer之間的通信;

      (2)ordinarypeer與Group-leaderpeer之間的通信;

      (3)ordinarypeer與ordinarypeer之間的通信。

      三個通信鏈路上的信息都是不一樣的。因此,必須給三個通信鏈路都制定相應的通信協議。QPS不是多線程的,因此對每個通信套接字來說,都必須知道對方的套接字。這在實現上也存在一定的難度,這個是由開發工具而帶來的。最后一個難度是NAT穿透問題。為了解決不同局域網間的通信,這個問題的解決是必須的。由于開發硬件環境的限制,現版本的QPS本沒有考慮這個問題。也就是說,實現的版本是局域網內的。在此,需要指出的是,NAT的問題并沒有違背QPS的目的。首先,QPS只是當前的一個版本,以后可能會進一步完善;再者,在將來IPv6的推出就自然而然的解決了不同局域網內通信這一問題。

      2實現過程

      針對上節的三個通信鏈路,必須要設計好三個通信協議。先看下QPS中需要傳輸的各種信息。如圖1:

      通信鏈路上的信息表示的意義如下:

      Downloadrequest:文件下載請求信息;

      Filedata:文件數據;

      Localsharelist:本地的共享信息列表,包括文件名,文件大小,下載次數等;

      Sharelist:Group-leaderpeer上的共享信息列表;

      Searchmessage:文件搜索信息,包括文件名及搜索跳數;

      Searchresult:返回的搜索結果,包括文件名和文件所在IP;

      Otherleadermsg:其他leaderpeer上的信息,包括連接ordinarypeer數目和文件數量等;

      Localsharemsg:和otherleadermsg一樣。

      (1)數據結構定義。

      為了實現以上三個通信協議,首先規定了一些數據結構,以區別不同的通信信息。個種數據結構如下:

      #defineFILEINFO1//文件信息

      #defineSHAREINFO2//共享列表信息

      #defineDOWNLOAD3//下載請求信息#defineSEARCH4//文件搜索信息

      #defineLEADERINFO5//Group-leaderpeer信息

      #defineFILEDATA6//文件數據

      #defineMAX_SIZE(2048*10)//文件數據的大小

      typedefstruct

      {

      inttype;//表示是何種信息,下同

      ULONGsize;//文件大小

      ULONGdownloadTimes;//文件下載次數

      charname[100];//文件名

      }FileMsg;//文件信息結構體

      typedefstruct

      {

      inttype;

      ULONGsize;//文件大小

      ULONGdownloadTimes;//文件下載次數

      charip[20];//文件所在IP

      charname[100];//文件名

      }ShareMsg;//共享信息列表結構體

      typedefstruct

      {

      inttype;

      ULONGsize;//文件大小

      ULONGseek;//文件數據塊在文件中的位置

      charname[100];//文件名

      }DownloadMsg;//下載請求結構體

      typedefstruct

      {

      inttype;

      ULONGtips;//文件搜索跳數

      charname[100];//文件名

      }SearchMsg;//文件搜索結構體

      typedefstruct

      {

      inttype;

      ULONGconnectedNumber;//連接數量

      ULONGfileNumber;//文件數目

      charip[20];//Group-leaderpeer的IP

      }LeaderMsg;//Group-leaderpeer信息結構體

      typedefstruct

      {

      inttype;

      ULONGseek;//文件數據塊在文件中的位置

      ULONGbytes;//buff中的實際字節數

      ULONGsize;//文件大小

      charname[100];//文件名

      charbuff[MAX_SIZE];//文件數據

      }FileData;//文件數據結構體

      (2)信息傳輸函數的聲明。

      voiduploadShareList(constFileMsg&file);//uploadlocalsharelisttoleader

      voiddownload(constDownloadMsg&msg);//downloadfiledata

      voidsearch(QStringfileName,UINTtips);//searchafile

      voiddownShareList();//downloadotherpeers''''sharelistfromleader

      voidotherLeadersInfo();//getotherleaders''''infothroughtheconnectedleader

      voidsearchBack();//seachresultback,readit

      voiduploadFile(intsock);//uploadthefiledatathatdownloaderrequested

      voidreceiveList(intsock);//receivepeer''''ssharelist

      voidsendShareList(ComSocket*socket);//sendsharelisttopeer->socket

      voidsendOtherLeaderInfo(ComSocket*socket);//sendotherleaders''''infotopeer

      voidsendLeaderInfo(ComSocket*socket);//sendleader''''sinfotosomeleader

      voidsearch(intsock);//receivedsearchrequestfrompeer

      voidremoteSearch(SearchMsgmsg);//sendsearchtologonedleader

      voidleaderSearch(intsock);//receivedleader''''ssearchrequest

      voidsearchBack();//receivedsearchresultfromleader

      以上函數是根據上面的數據結構而聲明的。每個函數都有一個對應的數據結構。這些函數是整個系統的核心。

      設計了解決通信問題的數據結構和函數的聲明后,剩下需要做的便是具體編碼,將聲明的函數加以實現,最后測試其是否正確便真正意義上的解決了上面敘述的難點問題,也是核心問題。

      (3)用戶接口。

      QPS只給用戶提供了簡單的操作接口,但我相信這是足夠的。具體的用戶接口如下:

      連接選擇:讓用戶選擇想要連接的Group-leaderpeer。

      上傳數目設置:為了限制上傳量,保障用戶的系統資源(CPU,網絡帶寬等)。

      搜索設置:讓用戶輸入文件名及搜索跳數。

      下載選擇:雙擊文件名即可下載該文件。共享目錄設置:讓用戶選擇想要共享的目錄

      下載目錄設置:讓用戶選擇下載文件放置的路徑

      除了上述用戶可以直接操作的接口外,還有些接口是用戶不可操作的。這些接口是用來顯示當前系統的運行情況。比如,下載顯示用來顯示當前正在下載的文件,包括下載速率,已下載文件的大小等;而下載完成列表顯示的則是系統自啟動以來下載的所有文件列表。對于許多的其他文件共享系統來說,它們都有豐富的接口,盡可能的讓用戶使用更簡便。QPS的設計和實現的主要目的是在原理和策略上挖掘網絡資源,使得網絡資源能夠盡可能的廣泛共享。因此,在界面上只做了基本的接口。

      (4)配置文件。

      為方便用戶的各項設置,QPS中也有許多的配置文件。這些配置文件在系統運行時會被自動的讀取,相應的變量會被賦值。用戶改變某個設置后,這項設置同樣會被寫入到配置文件中,并在下次運行時被讀取。這類配置文件典型的是下載目錄和共享目錄的設置。系統運行時,會找到當前共享目錄路徑,并獲取該目錄下文件信息。還有一類配置文件是可作為用戶輸入的文本文件。比如leaders.dat這個文件就是用來讓用戶輸入可以選擇連接的Group-leaderpeerIP的。記錄文件被下載次數的配置文件對用戶來說是不可更改的,這是為了防止用戶惡意修改此文件以獲得totalValue,達到少共享文件就可以下載大量文件的目的。

      文件共享系統QPS是在上面敘述的四點上一步一步加以實現的,其中也有考慮不全的地方,反反復復經過了幾次修改。在提供基本功能上,工作重點都放在協議的實現上。由于Qt開發平臺沒有對網絡程序提供豐富的接口,許多的接口不得不自己一步一步實現并測試正確性。在這點上,對QPS的實現確實用相當大的影響。當然,這帶來的好處是二次開發比較簡便,因為上層的接口都是已經實現了的,正確性很高。

      參考文獻

      [1]陸正中,馬進德,石正貴等.JBuilder9軟件開發項目實踐[M].北京:清華大學出版社,2005:240-261.[2]JamesF.Kurose,KeithW.Ross。計算機網絡——自頂向下方法與Internet特色[M].北京:高等教育出版社,2005:136-145.

      [3]RobertFlenner等,JavaP2P技術內幕[M].北京:電子工業出版社,2003:200-235.

      [4]許斌.JXTA——JavaP2P網絡編程技術[M].北京:清華大學出版社,2003:1-256.

      [5]Oaks,Traversat,Gong.JXTA技術手冊[M].北京:清華大學出版社,2004:23-78.

      文檔上傳者
      主站蜘蛛池模板: 色综合热无码热国产| 永久无码天堂网小说区| 热久在线免费观看视频| 国产激情电影综合在线看| 亚洲欧美日韩成人综合一区| 不卡乱辈伦在线看中文字幕| 亚洲不卡一区三区三区四| 国产成人午夜精品永久免费| 色呦呦九九七七国产精品| 日本丶国产丶欧美色综合| 国产超碰无码最新上传| 欲色欲色天天天www| 97精品伊人久久久大香线蕉| 手机无码人妻一区二区三区免费 | 国产乱码日产乱码精品精| 日韩av在线不卡一区二区三区| 色综合久久久久综合体桃花网| 人妻少妇精品中文字幕| 日本A级视频在线播放| 激情 自拍 另类 亚洲| 国产成AV人片久青草影院| 国语精品自产拍在线观看网站| 深夜释放自己在线观看| 亚洲另类激情专区小说图片| 国产对白老熟女正在播放| 老司机免费的精品视频| 中文字幕成人精品久久不卡| 国产成人高清亚洲综合| 香港日本三级亚洲三级| 日韩有码av中文字幕| 中文字幕在线精品人妻| 老司机午夜精品视频资源| 精品人妻中文字幕av| 一区二区福利在线视频| 亚洲国产成人无码电影| 久久亚洲精品情侣| 里番全彩爆乳女教师| 免费无码一区无码东京热| 国产AV影片麻豆精品传媒| 国产一区日韩二区三区| 亚洲国产精品午夜福利|