99精品久久这里只有精品,三上悠亚免费一区二区在线,91精品福利一区二区,爱a久久片,无国产精品白浆免费视,中文字幕欧美一区,爽妇网国产精品,国产一级做a爱免费观看,午夜一级在线,国产精品偷伦视频免费手机播放

    <del id="eyo20"><dfn id="eyo20"></dfn></del>
  • <small id="eyo20"><abbr id="eyo20"></abbr></small>
      <strike id="eyo20"><samp id="eyo20"></samp></strike>
    • 首頁 > 文章中心 > 正文

      P2P文件系統(tǒng)

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

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

      關(guān)鍵詞:文件共享;P2P;策略;Qt

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

      1系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)的重點(diǎn)與難點(diǎn)

      系統(tǒng)QPS在Linux上用Qt開發(fā),系統(tǒng)設(shè)計(jì)原理和策略都并不復(fù)雜,但這不代表系統(tǒng)的實(shí)現(xiàn)也是簡(jiǎn)單的。對(duì)于系統(tǒng)的整個(gè)實(shí)現(xiàn)來說,有三個(gè)地方是最重要的,也是比較難的。先介紹系統(tǒng)運(yùn)行流程:

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

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

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

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

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

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

      從上面的過程可以看出,系統(tǒng)共有三個(gè)通信鏈路,分別是:

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

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

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

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

      2實(shí)現(xiàn)過程

      針對(duì)上節(jié)的三個(gè)通信鏈路,必須要設(shè)計(jì)好三個(gè)通信協(xié)議。先看下QPS中需要傳輸?shù)母鞣N信息。如圖1:

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

      Downloadrequest:文件下載請(qǐng)求信息;

      Filedata:文件數(shù)據(jù);

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

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

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

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

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

      Localsharemsg:和otherleadermsg一樣。

      (1)數(shù)據(jù)結(jié)構(gòu)定義。

      為了實(shí)現(xiàn)以上三個(gè)通信協(xié)議,首先規(guī)定了一些數(shù)據(jù)結(jié)構(gòu),以區(qū)別不同的通信信息。個(gè)種數(shù)據(jù)結(jié)構(gòu)如下:

      #defineFILEINFO1//文件信息

      #defineSHAREINFO2//共享列表信息

      #defineDOWNLOAD3//下載請(qǐng)求信息#defineSEARCH4//文件搜索信息

      #defineLEADERINFO5//Group-leaderpeer信息

      #defineFILEDATA6//文件數(shù)據(jù)

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

      typedefstruct

      {

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

      ULONGsize;//文件大小

      ULONGdownloadTimes;//文件下載次數(shù)

      charname[100];//文件名

      }FileMsg;//文件信息結(jié)構(gòu)體

      typedefstruct

      {

      inttype;

      ULONGsize;//文件大小

      ULONGdownloadTimes;//文件下載次數(shù)

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

      charname[100];//文件名

      }ShareMsg;//共享信息列表結(jié)構(gòu)體

      typedefstruct

      {

      inttype;

      ULONGsize;//文件大小

      ULONGseek;//文件數(shù)據(jù)塊在文件中的位置

      charname[100];//文件名

      }DownloadMsg;//下載請(qǐng)求結(jié)構(gòu)體

      typedefstruct

      {

      inttype;

      ULONGtips;//文件搜索跳數(shù)

      charname[100];//文件名

      }SearchMsg;//文件搜索結(jié)構(gòu)體

      typedefstruct

      {

      inttype;

      ULONGconnectedNumber;//連接數(shù)量

      ULONGfileNumber;//文件數(shù)目

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

      }LeaderMsg;//Group-leaderpeer信息結(jié)構(gòu)體

      typedefstruct

      {

      inttype;

      ULONGseek;//文件數(shù)據(jù)塊在文件中的位置

      ULONGbytes;//buff中的實(shí)際字節(jié)數(shù)

      ULONGsize;//文件大小

      charname[100];//文件名

      charbuff[MAX_SIZE];//文件數(shù)據(jù)

      }FileData;//文件數(shù)據(jù)結(jié)構(gòu)體

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

      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

      以上函數(shù)是根據(jù)上面的數(shù)據(jù)結(jié)構(gòu)而聲明的。每個(gè)函數(shù)都有一個(gè)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。這些函數(shù)是整個(gè)系統(tǒng)的核心。

      設(shè)計(jì)了解決通信問題的數(shù)據(jù)結(jié)構(gòu)和函數(shù)的聲明后,剩下需要做的便是具體編碼,將聲明的函數(shù)加以實(shí)現(xiàn),最后測(cè)試其是否正確便真正意義上的解決了上面敘述的難點(diǎn)問題,也是核心問題。

      (3)用戶接口。

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

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

      上傳數(shù)目設(shè)置:為了限制上傳量,保障用戶的系統(tǒng)資源(CPU,網(wǎng)絡(luò)帶寬等)。

      搜索設(shè)置:讓用戶輸入文件名及搜索跳數(shù)。

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

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

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

      (4)配置文件。

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

      文件共享系統(tǒng)QPS是在上面敘述的四點(diǎn)上一步一步加以實(shí)現(xiàn)的,其中也有考慮不全的地方,反反復(fù)復(fù)經(jīng)過了幾次修改。在提供基本功能上,工作重點(diǎn)都放在協(xié)議的實(shí)現(xiàn)上。由于Qt開發(fā)平臺(tái)沒有對(duì)網(wǎng)絡(luò)程序提供豐富的接口,許多的接口不得不自己一步一步實(shí)現(xiàn)并測(cè)試正確性。在這點(diǎn)上,對(duì)QPS的實(shí)現(xiàn)確實(shí)用相當(dāng)大的影響。當(dāng)然,這帶來的好處是二次開發(fā)比較簡(jiǎn)便,因?yàn)樯蠈拥慕涌诙际且呀?jīng)實(shí)現(xiàn)了的,正確性很高。

      參考文獻(xiàn)

      [1]陸正中,馬進(jìn)德,石正貴等.JBuilder9軟件開發(fā)項(xiàng)目實(shí)踐[M].北京:清華大學(xué)出版社,2005:240-261.[2]JamesF.Kurose,KeithW.Ross。計(jì)算機(jī)網(wǎng)絡(luò)——自頂向下方法與Internet特色[M].北京:高等教育出版社,2005:136-145.

      [3]RobertFlenner等,JavaP2P技術(shù)內(nèi)幕[M].北京:電子工業(yè)出版社,2003:200-235.

      [4]許斌.JXTA——JavaP2P網(wǎng)絡(luò)編程技術(shù)[M].北京:清華大學(xué)出版社,2003:1-256.

      [5]Oaks,Traversat,Gong.JXTA技術(shù)手冊(cè)[M].北京:清華大學(xué)出版社,2004:23-78.

      文檔上傳者
      国产av一区二区三区狼人香蕉| 国产精彩视频| 亚洲人成精品久久久久 | 亚洲av乱码专区国产乱码| 国产精品亚洲av网站| 日韩人妻大奶子生活片| 日本最新一区二区三区在线| 国产一区二区在线观看av| 熟女中文字幕一区二区三区| а天堂8中文最新版在线官网| 天堂资源中文最新版在线一区 | 成人无码av免费网站| 东京热无码av一区二区| 真人无码作爱免费视频禁hnn| 国产成人综合久久精品推| 男人天堂av在线成人av| 亚洲国产综合一区二区| 五月激情在线视频观看| 18禁止看的免费污网站| 国产成本人片无码免费2020| 欧美老熟妇又粗又大| 大胸美女吃奶爽死视频| 亚洲精品国产二区在线观看| 风韵人妻丰满熟妇老熟| 激情综合色五月丁香六月欧美| 国产乱人视频在线播放| 538在线啪在线观看| 亚洲AV无码一区二区一二区色戒| 亚洲国产综合久久精品| 老熟妇乱子伦牲交视频| 中文字幕欧美人妻精品一区| 亚洲精品永久在线观看| 国产欧美日韩专区毛茸茸| 经典亚洲一区二区三区| 亚洲天堂av在线网站| 少妇愉情理伦片| 91spa国产无码| 特一级熟女毛片免费观看 | 久久精品亚州中文字幕| 国产精品9999久久久久仙踪林| 国产专区国产av|