局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)目錄摘要1Abstract11.緒論21.1背景2課題研究的目的及意義21.3課題研究?jī)?nèi)容31.4本文組織結(jié)構(gòu)3技術(shù)概述42.1P2P的概念42.2P2P的技術(shù)特點(diǎn)42.3P2P和C/S的比擬52.4P2P的實(shí)際應(yīng)用53.局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)73.1系統(tǒng)設(shè)計(jì)73.1.1系統(tǒng)啟動(dòng)模塊83.1.2資源共享模塊83.1.3資源搜索模塊83.1.4在線聊天模塊93.1.5網(wǎng)絡(luò)文件列表模塊93.1.6其他系統(tǒng)模塊93.2系統(tǒng)實(shí)現(xiàn)103.2.1系統(tǒng)啟動(dòng)功能103.2.2資源共享功能113.2.3資源搜索功能133.2.4在線聊天功能143.2.5網(wǎng)絡(luò)文件列表153.2.6關(guān)于系統(tǒng)功能163.2.7幫助系統(tǒng)功能183.2.8退出系統(tǒng)功能18結(jié)論19參考文獻(xiàn)20致謝21局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)XE摘要:近年來,P2P技術(shù)在網(wǎng)絡(luò)上得到廣泛應(yīng)用,成為網(wǎng)絡(luò)技術(shù)的新熱點(diǎn)。P2P技術(shù)與傳統(tǒng)的客戶端/效勞器(C/S)或?yàn)g覽器/效勞器(B/S)相比,有明顯的技術(shù)優(yōu)勢(shì),在P2P網(wǎng)絡(luò)中每一個(gè)節(jié)點(diǎn)〔Peer〕之間的關(guān)系是對(duì)等的,同時(shí)具有Client和Server的特點(diǎn)。他們可以直接通信,無需依賴集中式效勞器。P2P技術(shù)在網(wǎng)絡(luò)應(yīng)用上有很大的開展空間。JXTA是為搭建P2P網(wǎng)絡(luò)制定的一組協(xié)議,這組協(xié)議描述和實(shí)現(xiàn)了P2P網(wǎng)絡(luò)應(yīng)用中的各種問題,為P2P網(wǎng)絡(luò)應(yīng)用開發(fā)提供了一個(gè)統(tǒng)一的開發(fā)平臺(tái)。本系統(tǒng)就是在深入了解P2P技術(shù)和JXTA實(shí)現(xiàn)平臺(tái)的根底上,設(shè)計(jì)實(shí)現(xiàn)的基于JXTA的P2P局域網(wǎng)資源共享系統(tǒng),在局域網(wǎng)內(nèi)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的文件上傳和文件下載功能。本系統(tǒng)的優(yōu)點(diǎn)是在一個(gè)局域網(wǎng)內(nèi)每個(gè)Windows平臺(tái)的客戶機(jī)用戶只需輸入一個(gè)用戶名和密碼登錄系統(tǒng),即可與局域網(wǎng)內(nèi)的其他登錄用戶即時(shí)聊天,文件傳輸。關(guān)鍵詞:P2P;JXTA;資源共享P2PResource-sharingLANSoftwareDesignandImplementationAbstract:Recentlyyears,theP2Ptechnologybecomesthenewhotspotofnetworktechnologies,usedwidelyonnetwork.ThishasobviousadvantagecomparedtotraditionalC/SandB/S.InP2PnetworkeveryPeershasthesamestationandthefunctionsofClientandServer.TheycancommunicatedirectlyeachotherindependentonCenterServer.TheP2PTechnologyhasexpansivedevelopingspaceinnetworkapplication.JXTAisagroupofprotocolsthatestablishedforbuildingaP2Pnetwork.ThegroupofprotocolsdescribesandimplementskindsofproblemsinP2Pnetworkapplications,builtauniformplatformfordevelopingP2Pnetworkapplications.ThissystemisALAN-P2Presource-sharingSystemBasedonJXTA,achievedonbaseofdeeplyknowingtheP2PtechnologyandJXTA’ScodesofJAVA.ThefunctionistoachievefileuploadingandfiledownloadingbetweenPeerandPeer.Therearesomeadvantagesinthissystem.UsercanloginthesystemjustinputausernameandapasswordinthesameLANbasedonWindowsSystem.Keywords:JXTA;P2P;Resources-Sharing1.緒論1.1背景隨著Internet的飛速開展,各種技術(shù)都得到了飛速開展,P2P[1]技術(shù)也正逐漸成為技術(shù)界的一個(gè)熱門話題。P2P帶來的一個(gè)顯著的變化是改變了“內(nèi)容〞所在的位置,內(nèi)容正在從“中心〞走向“邊緣〞,信息的共享不再完全依賴中心效勞器。互聯(lián)網(wǎng)技術(shù)以往的開展軌跡向人們預(yù)示著,P2P這一新的網(wǎng)絡(luò)技術(shù)思想,最終也會(huì)對(duì)網(wǎng)絡(luò)結(jié)構(gòu)本身,網(wǎng)絡(luò)中的信息使用和傳播方式、以及人們使用互聯(lián)網(wǎng)的方式等產(chǎn)生深遠(yuǎn)的影響。從目前的應(yīng)用來看,P2P的應(yīng)用還主要表達(dá)在大范圍的共享、搜索的優(yōu)勢(shì)上?;蛘哒f是更好地解決了網(wǎng)絡(luò)上五大類型[6]的應(yīng)用:分布式計(jì)算、協(xié)同工作、搜索引擎、文件共享和即時(shí)通信。盡管對(duì)P2P存在著這樣那樣的疑慮,許多IT專家仍然相信該技術(shù)將徹底推翻現(xiàn)在抑制分布式計(jì)算開展的藩籬?,F(xiàn)在的桌面系統(tǒng)的性能遠(yuǎn)遠(yuǎn)超過以前的許多效勞器,這為P2P的開展提供了巨大的硬件根底。而隨著寬帶、高速網(wǎng)絡(luò)的開展,PC將釋放出前所未有的潛能,而虛擬專用網(wǎng)絡(luò)軟件也將為P2P的開展提供保障。如果說過去的幾年P(guān)2P技術(shù)給業(yè)界帶來了一個(gè)新的技術(shù)思路,那么未來幾年P(guān)2P技術(shù)可能會(huì)帶來巨大的商業(yè)價(jià)值。P2P技術(shù)對(duì)于寬帶網(wǎng)絡(luò)的優(yōu)化是無法估量的,其在多媒體文件傳輸領(lǐng)域、有線通信、無線通信領(lǐng)域蘊(yùn)含著極大的商機(jī)。P2P網(wǎng)絡(luò)不僅降低了硬件設(shè)備投入本錢和網(wǎng)絡(luò)內(nèi)容供給本錢,更重要的是其消除了中央效勞器信息轉(zhuǎn)發(fā)引致的瓶頸效應(yīng),同時(shí)對(duì)于分布式的邊緣內(nèi)容的充分利用更是開拓了一個(gè)新的應(yīng)用思路。P2P技術(shù)平臺(tái)也并非一個(gè)簡(jiǎn)單的文件傳輸系統(tǒng),更是下一代的互聯(lián)網(wǎng)絡(luò)的典型和初期架構(gòu)形式,中央效勞器在融合了P2P網(wǎng)絡(luò)的互聯(lián)網(wǎng)中只是承當(dāng)了用戶信息的管理和局部信息的發(fā)布工作,而不必承當(dāng)沉重的數(shù)據(jù)轉(zhuǎn)發(fā)工作,有效消除了信息孤島的存在及信息傳輸過程中的瓶頸問題,同時(shí)對(duì)承載了多達(dá)60%的弱鏈接模塊的互聯(lián)網(wǎng)絡(luò)流量進(jìn)行了有效的管理。目前,互聯(lián)網(wǎng)上的各種效勞,不管采用B/S模式還是采用C/S模式,都是以網(wǎng)絡(luò)效勞器為中心的。網(wǎng)絡(luò)用戶向效勞器發(fā)送請(qǐng)求,然后從效勞器得到相應(yīng)的回應(yīng)信息,用戶之間的交流都高度依賴于網(wǎng)絡(luò)效勞器,無法直接交流信息。隨著Internet的日益開展和普及,它在某種程度上開始制約著Internet的開展。而P2P方式那么是以用戶為中心,所有的用戶都是平等的伙伴,相互之間可以直接交流信息。P2P是一種相對(duì)較新的技術(shù),以P2P技術(shù)為根底的流行軟件能實(shí)現(xiàn)不同的任務(wù)。但是由于開發(fā)人員解決相同的問題并重寫相似的根底實(shí)現(xiàn),使得應(yīng)用程序的開發(fā)效率不高,并且,大多數(shù)的應(yīng)用程序只適用于某一種特定的平臺(tái),且相互之間不能進(jìn)行通信和數(shù)據(jù)共享。JXTA[2]工程的其中一個(gè)目的就是提供一個(gè)平臺(tái),該平臺(tái)帶有P2P網(wǎng)絡(luò)所必需的根本功能。P2P資源共享系統(tǒng)[8]是一個(gè)用于對(duì)等網(wǎng)絡(luò)的數(shù)據(jù)共享系統(tǒng),它可以提供高效率的、魯棒的和負(fù)載平衡的文件共享功能。P2P的最大優(yōu)勢(shì)是其不依賴效勞器調(diào)用網(wǎng)絡(luò)資源的靈活性,同時(shí)它采用了類似于負(fù)載均衡的機(jī)制,其基于UDP的連接方式不需要穩(wěn)定的網(wǎng)絡(luò)連接即可實(shí)現(xiàn)節(jié)點(diǎn)間的通信。這些正是C/S、B/S架構(gòu)所欠缺的。相對(duì)于目前流行的C/S、B/S的“集中式〞網(wǎng)絡(luò)結(jié)構(gòu),P2P最大的特點(diǎn)在于“分散〞。它讓網(wǎng)絡(luò)邊緣的節(jié)點(diǎn)更趨智能化,網(wǎng)絡(luò)中所有的計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)連接能力都能夠平均地分布在非集中式網(wǎng)絡(luò)的“對(duì)等伙伴〞上。實(shí)踐證明,P2P所提供的基于節(jié)點(diǎn)的獨(dú)立、動(dòng)態(tài)的連接方式,徹底顛覆了以往企業(yè)中計(jì)算資源的分配規(guī)那么,不僅讓網(wǎng)絡(luò)更具靈活性,還很好地解決了集中式計(jì)算模式最為頭痛的網(wǎng)絡(luò)擁塞問題。只要對(duì)P2P網(wǎng)絡(luò)中分散的節(jié)點(diǎn)加以有效的控制和管理,P2P應(yīng)用完全能夠在企業(yè)環(huán)境中大展身手,使其具有重要的意義。1.3課題研究?jī)?nèi)容本論文首先對(duì)現(xiàn)有P2P技術(shù)現(xiàn)狀進(jìn)行了研究,總結(jié)了現(xiàn)有P2P應(yīng)用的特點(diǎn)。對(duì)SUN公司的開源JXTA工程進(jìn)行了深入的研究,對(duì)JXIA協(xié)議[3]和JXTA的J2SE實(shí)現(xiàn)參考模型提供的效勞進(jìn)行了分析。采用了一個(gè)P2P應(yīng)用開發(fā)的框架模型,給出了P2P幾個(gè)關(guān)鍵問題的實(shí)施策略,并基于JXTA[7]的J2SE參考模型加以實(shí)現(xiàn)。1.4本文組織結(jié)構(gòu)各章內(nèi)容安排如下:第1章緒論:闡述了本文的背景及本人所做工作和本文的組織結(jié)構(gòu)。第2章P2P技術(shù)概述:介紹了P2P的概念、然后把傳統(tǒng)的C/S模型和P2P模型進(jìn)行了比照,同時(shí)也給出了P2P可能的應(yīng)用范圍第3章基于P2P技術(shù)的資源共享系統(tǒng)的研究與應(yīng)用:給出了該系統(tǒng)的詳細(xì)設(shè)計(jì)和有關(guān)主要代碼類的實(shí)現(xiàn)。2P技術(shù)概述2.1P2P的概念目前,在學(xué)術(shù)界、工業(yè)界對(duì)于P2P沒有一個(gè)統(tǒng)一的定義,下面是幾個(gè)常用的定義[10]:P2P是一種計(jì)算機(jī)互聯(lián)網(wǎng)絡(luò)。它允許使用同一種連接程序的用戶可以直接從對(duì)方計(jì)算機(jī)硬盤上讀取文件。P2P是一種共享資源的應(yīng)用程序。它運(yùn)行在個(gè)人電腦上并且通過網(wǎng)絡(luò)和其他人共享資源。P2P網(wǎng)絡(luò)通過各主機(jī)的相互連接來共享資源而不是通過中心效勞器。P2P是一種分布式網(wǎng)絡(luò)。網(wǎng)絡(luò)的參與者共享他們所擁有的一局部硬件資源(處理能力、存儲(chǔ)能力、網(wǎng)絡(luò)連接能力、打印機(jī)等),這些共享資源需要由網(wǎng)絡(luò)提供效勞和內(nèi)容,能被其它對(duì)等節(jié)點(diǎn)(Peer)直接訪問而無需經(jīng)過中間實(shí)體。在此網(wǎng)絡(luò)中的參與者既是資源(效勞和內(nèi)容)提供者(Server),又是資源(效勞和內(nèi)容)獲取者(Client)。雖然上述定義稍有不同,但共同點(diǎn)都是P2P打破了傳統(tǒng)的Client/Server(C/S)模式,在網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)的地位都是對(duì)等的。每個(gè)節(jié)點(diǎn)既充當(dāng)效勞器,為其他節(jié)點(diǎn)提供效勞,同時(shí)也享用其他節(jié)點(diǎn)提供的效勞。2.2P2P的技術(shù)特點(diǎn)P2P技術(shù)特點(diǎn)主要表達(dá)在以下幾個(gè)方面[4]:非中心化。網(wǎng)絡(luò)中的資源和效勞分散在所有節(jié)點(diǎn)上,信息的傳輸和效勞的實(shí)現(xiàn)都直接在節(jié)點(diǎn)之間進(jìn)行,可以無需中間環(huán)節(jié)和效勞器的介入,防止了可能的瓶頸。P2P的非中心化的根本特點(diǎn),帶來了其在可擴(kuò)展性、健壯性等方面的優(yōu)勢(shì)??蓴U(kuò)展性。在P2P網(wǎng)絡(luò)中,隨著用戶的參加,不僅效勞的需求增加了,系統(tǒng)整體的資源和效勞能力也在同步地?cái)U(kuò)充,始終能較容易地滿足用戶的需要。整個(gè)體系是全分布的,不存在瓶頸,理論上其可擴(kuò)展性幾乎可以認(rèn)為是無限的。健壯性。P2P架構(gòu)天生具有耐攻擊、高容錯(cuò)的優(yōu)點(diǎn)。由于效勞是分散在各個(gè)節(jié)點(diǎn)之間進(jìn)行的,局部節(jié)點(diǎn)或網(wǎng)絡(luò)遭到破壞對(duì)其它局部的影響很小。P2P網(wǎng)絡(luò)一般在局部節(jié)點(diǎn)失效時(shí)能夠自動(dòng)調(diào)整整體拓?fù)?,保持其它?jié)點(diǎn)的連通性。P2P網(wǎng)絡(luò)通常都是以自組織的方式建立起來的,并允許節(jié)點(diǎn)自由地參加和離開,P2P網(wǎng)絡(luò)還能夠根據(jù)網(wǎng)絡(luò)帶寬、節(jié)點(diǎn)數(shù)、負(fù)載等變化不斷地做自適應(yīng)式的調(diào)整。高性能/價(jià)格比。性能優(yōu)勢(shì)是P2P被廣泛關(guān)注的一個(gè)重要原因。隨著硬件技術(shù)的開展,個(gè)人計(jì)算機(jī)的計(jì)算和存儲(chǔ)能力以及網(wǎng)絡(luò)帶寬等性能依照摩爾定理高速增長(zhǎng)。采用P2P架構(gòu)可以有效地利用互聯(lián)網(wǎng)中散布的大量普通節(jié)點(diǎn),將計(jì)算任務(wù)或存儲(chǔ)資料分布到所有節(jié)點(diǎn)上。利用其中閑置的計(jì)算能力或存儲(chǔ)空間,到達(dá)高性能計(jì)算和海量存儲(chǔ)的目的。通過利用網(wǎng)絡(luò)中的大量空閑資源,可以用更低的本錢提供更高的計(jì)算和存儲(chǔ)能力。隱私保護(hù)。在P2P網(wǎng)絡(luò)中,由于信息的傳輸分散在各節(jié)點(diǎn)之間進(jìn)行而無需經(jīng)過某個(gè)集中環(huán)節(jié),用戶的隱私信息被竊聽和泄漏的可能性大大縮小。此外,目前解決Internet隱私問題主要采用中繼轉(zhuǎn)發(fā)的技術(shù)方法,從而將通信的參與者隱藏在眾多的網(wǎng)絡(luò)實(shí)體之中。在傳統(tǒng)的一些匿名通信系統(tǒng)中,實(shí)現(xiàn)這一機(jī)制依賴于某些中繼效勞器節(jié)點(diǎn)。而在P2P中,所有參與者都可以提供中繼轉(zhuǎn)發(fā)的功能,因而大大提高了匿名通訊的靈活性和可靠性,能夠?yàn)橛脩籼峁└玫碾[私保護(hù)。負(fù)載均衡。P2P網(wǎng)絡(luò)環(huán)境下由于每個(gè)節(jié)點(diǎn)既是效勞器又是客戶機(jī),減少了對(duì)傳統(tǒng)C/S結(jié)構(gòu)效勞器計(jì)算能力、存儲(chǔ)能力的要求,同時(shí)因?yàn)橘Y源分布在多個(gè)節(jié)點(diǎn),更好的實(shí)現(xiàn)了整個(gè)網(wǎng)絡(luò)的負(fù)載均衡。2.3P2P和C/S的比擬目前,互聯(lián)網(wǎng)的主要模式是Client/Server(C/S)。它要求有高性能的效勞器,配合各種軟件來集中處理信息,同時(shí)還響應(yīng)網(wǎng)絡(luò)中其它客戶端的請(qǐng)求。這種結(jié)構(gòu)導(dǎo)致網(wǎng)絡(luò)中的內(nèi)容都向少數(shù)效勞器集中,效勞器成為網(wǎng)絡(luò)中的主宰。P2P模式相對(duì)于C/S模式有如下主要優(yōu)點(diǎn)[5]:資源的高度利用率。在P2P網(wǎng)絡(luò)上,閑散資源有時(shí)機(jī)得到利用,所有節(jié)點(diǎn)的資源總和構(gòu)成了整個(gè)網(wǎng)絡(luò)的資源,整個(gè)網(wǎng)絡(luò)可以被用作具有海量存儲(chǔ)能力和巨大計(jì)算處理能力的超級(jí)計(jì)算機(jī)。在C/S模式下,縱然客戶端有大量的閑置資源,也無法被利用。良好的網(wǎng)絡(luò)性能。隨著節(jié)點(diǎn)的增加,C/S模式下,效勞器的負(fù)載就越來越重,形成了系統(tǒng)的瓶頸,一旦效勞器崩潰,整個(gè)網(wǎng)絡(luò)也隨之癱瘓。而在P2P網(wǎng)絡(luò)中,每個(gè)對(duì)等體都是一個(gè)活動(dòng)的參與者,每個(gè)對(duì)等點(diǎn)都向網(wǎng)絡(luò)奉獻(xiàn)一些資源,如存儲(chǔ)空間、CPU周期等。所以,對(duì)等點(diǎn)越多,網(wǎng)絡(luò)的性能越好,網(wǎng)絡(luò)隨著規(guī)模的增大而越發(fā)穩(wěn)固。良好的尋址方式?;趦?nèi)容的尋址方式處于一個(gè)更高的語義層次,因?yàn)橛脩粼谒阉鲿r(shí)只需指定具有實(shí)際意義的信息標(biāo)識(shí)而不是物理地址,每個(gè)標(biāo)識(shí)對(duì)應(yīng)包含這類信息的節(jié)點(diǎn)的集合。這將創(chuàng)造一個(gè)更加精煉的信息倉(cāng)庫(kù)和一個(gè)更加統(tǒng)一的資源標(biāo)識(shí)方法。低效勞本錢。信息在網(wǎng)絡(luò)設(shè)備間直接流動(dòng)。使網(wǎng)絡(luò)高速及時(shí),降低中轉(zhuǎn)效勞本錢。資源的均勻分布。C/S模式下的互聯(lián)網(wǎng)是完全依賴于中心點(diǎn)效勞器的,沒有效勞器,網(wǎng)絡(luò)就沒有任何意義。而P2P網(wǎng)絡(luò)中,弱化效勞器的功能,甚至取消效勞器,任意兩臺(tái)PC互為效勞器及客戶機(jī),即使只有一個(gè)對(duì)等點(diǎn)存在,網(wǎng)絡(luò)也是活動(dòng)的,節(jié)點(diǎn)所有者可以隨意地將自己的信息發(fā)布到網(wǎng)絡(luò)上。P2P的技術(shù)方式將導(dǎo)致信息數(shù)據(jù)本錢資源向所有用戶的PC均勻分布,即“邊緣化〞趨勢(shì)。但是,P2P也有缺乏之處。P2P不易于管理,而對(duì)C/S網(wǎng)絡(luò),只需在中心點(diǎn)進(jìn)行管理。隨之而來的是P2P網(wǎng)絡(luò)中數(shù)據(jù)的平安性難于得到保證。因此,在平安策略、備份策略等方面,P2P的實(shí)現(xiàn)要復(fù)雜一些。另外,由于對(duì)等點(diǎn)可以隨意地參加或退出網(wǎng)絡(luò),會(huì)造成網(wǎng)絡(luò)帶寬和信息存在的不穩(wěn)定。2.4P2P的實(shí)際應(yīng)用P2P目前的主要應(yīng)用表達(dá)在大范圍的共享和搜索等方面。它能夠更好地解決網(wǎng)絡(luò)上三大類型的應(yīng)用[6]:對(duì)等計(jì)算、協(xié)同工作、文件交換。對(duì)等計(jì)算。通過眾多計(jì)算機(jī)來完成超級(jí)計(jì)算機(jī)的功能,一直是科學(xué)家夢(mèng)寐以求的事情。采用P2P技術(shù)的對(duì)等計(jì)算,可以把網(wǎng)絡(luò)中的眾多計(jì)算機(jī)暫時(shí)不用的計(jì)算能力連結(jié)起來,使用積累的能力執(zhí)行超級(jí)計(jì)算機(jī)的任務(wù)。任何需要大量數(shù)據(jù)處理的行業(yè)都可從對(duì)等計(jì)算中獲利,如天氣預(yù)報(bào)、動(dòng)畫制作、基因組的研究等。有了對(duì)等計(jì)算之后,就不再需要昂貴的超級(jí)計(jì)算機(jī)了。對(duì)等計(jì)算的開展本質(zhì)上是以PC機(jī)資源的有效利用為根本出發(fā)點(diǎn)的,通過網(wǎng)絡(luò)共享CPU資源。協(xié)同工作。公司機(jī)構(gòu)的日益分散,給員工和客戶提供輕松、方便的消息和協(xié)作的工具,變得日益重要。網(wǎng)絡(luò)的出現(xiàn),使協(xié)同工作成為可能。但傳統(tǒng)的WEB方式實(shí)現(xiàn),給效勞器帶來了極大的負(fù)擔(dān),造成了昂貴的本錢支出。P2P技術(shù)的出現(xiàn),使得互聯(lián)網(wǎng)上任意兩臺(tái)PC都可建立實(shí)時(shí)的聯(lián)系,建立了這樣一個(gè)平安、共享的虛擬空間,人們可以進(jìn)行各種各樣的活動(dòng),這些活動(dòng)可以同時(shí)進(jìn)行,也可以交互進(jìn)行。P2P技術(shù)可以幫助企業(yè)和關(guān)鍵客戶,以及合作伙伴之間建立起一種平安的網(wǎng)上工作聯(lián)系方式,因此基于P2P技術(shù)的協(xié)同工作也受到了極大的重視。文件交換。文件交換的需求直接引發(fā)了P2P技術(shù)熱潮。在傳統(tǒng)的WEB方式中,要實(shí)現(xiàn)在某個(gè)網(wǎng)站上搜索所需要的文件,然后下載,這種方式的不便之處不言而喻。電子郵件雖然方便了個(gè)人間文件傳遞問題,但卻無法解決大范圍的交換。這也是WEB的重要缺陷,Napster就是在此情況下橫空出世,抓住人們對(duì)MP3喜歡的需求,Napster的Mp3交換直接引發(fā)了網(wǎng)絡(luò)的P2P技術(shù)革命。3.局域網(wǎng)P2P資源共享軟件的設(shè)計(jì)與實(shí)現(xiàn)3.1系統(tǒng)設(shè)計(jì)本文在SUN公司提出的JXTA架構(gòu)根底上,采用純P2P組網(wǎng)模式設(shè)計(jì)并實(shí)現(xiàn)了P2P網(wǎng)絡(luò)資源共享系統(tǒng),系統(tǒng)主要實(shí)現(xiàn)的功能有:實(shí)現(xiàn)了對(duì)等網(wǎng)絡(luò)中組的創(chuàng)立、查找、參加和離開,各對(duì)等點(diǎn)的共享資源的參加、刪除、搜索以及下載,在線網(wǎng)友聊天功能.系統(tǒng)分為以下幾個(gè)模塊(如圖3-1):系統(tǒng)系統(tǒng)系統(tǒng)啟動(dòng)模塊資源共享模塊資源搜索模塊在線聊天模塊網(wǎng)絡(luò)文件列表關(guān)于系統(tǒng)模塊退出系統(tǒng)模塊幫助系統(tǒng)模塊圖3-1系統(tǒng)結(jié)構(gòu)圖界面設(shè)計(jì):系統(tǒng)采用標(biāo)準(zhǔn)Windows窗口設(shè)計(jì),主要分為:標(biāo)題欄、菜單欄、工具欄和當(dāng)前系統(tǒng)信息顯示。系統(tǒng)主界面設(shè)計(jì)如圖3-2。標(biāo)題欄:顯示本軟件的中英文名稱及圖標(biāo)。菜單欄:分為文件、導(dǎo)航、幫助菜單。工具欄:主要包括資源上傳按鈕、資源搜索按鈕、在線聊天按鈕、網(wǎng)絡(luò)文件列表按鈕、關(guān)于系統(tǒng)按鈕、幫助系統(tǒng)按鈕和退出系統(tǒng)按鈕。當(dāng)前系統(tǒng)信息顯示:主要包括當(dāng)前節(jié)點(diǎn)名、資源組和成員列表。圖3-2系統(tǒng)主界面設(shè)計(jì)3系統(tǒng)啟動(dòng)模塊初始化系統(tǒng)環(huán)境變量,調(diào)用JXTA協(xié)議自帶的登錄界面,輸入節(jié)點(diǎn)名和密碼,登錄系統(tǒng)。第一次使用請(qǐng)查看系統(tǒng)幫助。3資源共享模塊通過該模塊可以對(duì)共享的資源進(jìn)行添加和刪除等根本操作。它是通過ShareManager類利用CMS效勞對(duì)共享資源進(jìn)行管理的,通過ShareMonitor類對(duì)共享資源進(jìn)行監(jiān)控的。(l)共享內(nèi)容的添加。當(dāng)用戶調(diào)出添加共享的對(duì)話框時(shí),就可以在對(duì)話框內(nèi)選擇要共享的文件。添加完共享內(nèi)容后,就可以在對(duì)等組看到自己新添加的共享內(nèi)容。(2)共享內(nèi)容的刪除。用戶在對(duì)等組內(nèi)找到要求刪除的共享內(nèi)容,然后刪除自己想要?jiǎng)h除的共享內(nèi)容。資源共享模塊界面如圖3-3圖3-3資源共享界面3資源搜索模塊用戶調(diào)出搜索共享內(nèi)容的對(duì)話框,然后輸入查找共享內(nèi)容的關(guān)鍵字。就可以完成查找的功能,當(dāng)找到共享內(nèi)容后,本系統(tǒng)會(huì)自動(dòng)將內(nèi)容添加到對(duì)等組中。查看文件所在節(jié)點(diǎn),上傳者等信息。資源搜索模塊界面如圖3-4圖3-5資源搜索界面3在線聊天模塊提供在線網(wǎng)友的聊天限時(shí)通信功能,增進(jìn)網(wǎng)友之間的交流與互動(dòng)。在線聊天模塊界面如圖3-6圖3-6在線聊天界面3網(wǎng)絡(luò)文件列表模塊查看網(wǎng)絡(luò)中所有共享的資源。網(wǎng)絡(luò)文件列表模塊如圖3-6圖3-6網(wǎng)絡(luò)文件列表界面其他系統(tǒng)模塊〔1〕關(guān)于系統(tǒng)模塊介紹系統(tǒng)相關(guān)內(nèi)容,如版本、開發(fā)語言及環(huán)境,聯(lián)系作者等?!?〕幫助系統(tǒng)模塊提供系統(tǒng)使用的詳細(xì)幫助,使用廣闊網(wǎng)友能更好更快的使用本軟件?!?〕退出系統(tǒng)模塊完成系統(tǒng)關(guān)閉退出功能。3.2系統(tǒng)實(shí)現(xiàn)系統(tǒng)開發(fā)環(huán)境系統(tǒng)開發(fā)操作系統(tǒng):WindowsXP系統(tǒng)開發(fā)語言:Java系統(tǒng)開發(fā)工具:Eclipse開發(fā)所用API:JXTAJava實(shí)現(xiàn)包系統(tǒng)啟動(dòng)功能主要完成系統(tǒng)的初始化、界面初始化及JXTA類的初始化,各事件的監(jiān)聽。//主類LFS//主類LFSpublicclassLFSextendsJFrameimplementsActionListener,DiscoveryListener, PipeMsgListener{publicLFS(){//構(gòu)造方法try{ initFrame();//初始化系統(tǒng)界面 }catch(Exceptione){ e.printStackTrace(); } try{ initMenu();//初始化系統(tǒng)菜單 }catch(Exceptione){ e.printStackTrace(); }initionjxta();//初始化JXTA addKeyListener(newHelp()); }privatevoidinitFrame(){//初始化系統(tǒng)界面}privatevoidinitMenu(){//初始化系統(tǒng)菜單}publicvoidactionPerformed(ActionEventae){//事件監(jiān)聽}//main方法publicstaticvoidmain(Stringargs[]){ newLFS();}運(yùn)行結(jié)果如圖3-7,3-8圖3-7系統(tǒng)啟動(dòng)界面圖3-8系統(tǒng)運(yùn)行主界面資源共享功能//上傳功能:intresult=chooser.showOpenDialog(this);//上傳功能:intresult=chooser.showOpenDialog(this); Filefile=chooser.getSelectedFile(); if(result==JFileChooser.APPROVE_OPTION){ StringfileHashID=hash.getMD5ofStr(file.getName());//得到與文件Hash值最近的節(jié)點(diǎn)號(hào) StringPID=smpare(fileHashID,peerhash1); Object[]Data={file.getName(),file.getPath(),name,peerID,file.getName(),fileHashID,PID}; model=(MyTableModel)shareTable.getModel(); model.addrow(Data); //sendthefilemessagetoother try{ //如果最近的節(jié)點(diǎn)不在本機(jī)上就發(fā)送消息 if(PID.equals(peerID)==false){OutputPipeop1=(OutputPipe)shareNetPipe1.get(PID);OutputPipeop1=(OutputPipe)shareNetPipe1.get(PID); op1.send((Message)bm1.addfileMessage(peerID,name, file.getPath(),file.getName(),fileHashID)); } //如果最近的節(jié)點(diǎn)就是本機(jī),在網(wǎng)絡(luò)索引表中增加該條信息 else{ Object[]RowData={file.getName(),file.getPath(), name,peerID,file.getName(),fileHashID}; netfilelist1.addfileRow(RowData); } }catch(Exceptionee){ ee.printStackTrace(); JOptionPane.showMessageDialog(null,"ShareWrong"); }//刪除功能:try{ introw=shareTable.getSelectedRow(); if(row!=-1){ model=(MyTableModel)shareTable.getModel(); Stringi=(String)model.getValueAt(row,5); //得到存放該文件索引的節(jié)點(diǎn)IDStringid=smpare(i,peerhash1); Stringfilename=(String)model.getValueAt(row,0); Stringfilepath=(String)model.getValueAt(row,1); model.removeRow(row); //sendthefiledeletemessagetoonewhokeepthe //fileindex //要?jiǎng)h除的文件索引在遠(yuǎn)程 if(id.equals(peerID)==false){ OutputPipeop1=(OutputPipe)shareNetPipe1.get(id); op1.send((Message)bm1.removefileMessage(peerID,filename,filepath)); }else{//要?jiǎng)h除的文件索引在本地 netfilelist1.removefileRow(filename,filepath,id); } }catch(Exceptioned){ ed.printStackTrace(); JOptionPane.showMessageDialog(null,"ShareWrong"); }資源共享運(yùn)行結(jié)果如圖3-9圖3-9資源共享界面資源搜索功能輸入關(guān)鍵字.搜索自己想要尋找的內(nèi)容。try{try{ Stringtext=searchnameField.getText(); if(text.equals("")){ JOptionPane.showMessageDialog(null,"請(qǐng)輸入要查詢的文件","Warning", JOptionPane.WARNING_MESSAGE); }else{ Stringfilehash=hash.getMD5ofStr(text);//text生成哈西 StringPID=smpare(filehash,peerhash);//得到與文件Hash值最近的節(jié)點(diǎn)關(guān)鍵字 OutputPipeop1=null; if(PID.equals(pid)==false){//非本機(jī)對(duì)等節(jié)點(diǎn) do{ op1=(OutputPipe)shareNetPipe.get(PID); }while(op1==null); op1.send((Message)bm.searchfileMessage(pid,text)); }else{//如果最近的節(jié)點(diǎn)就是本機(jī),直接在自己的網(wǎng)絡(luò)索引表中查找 netfilelist.searchlocal(text,searchtable); } } }catch(Exceptionee){ ee.printStackTrace(); }資源搜索運(yùn)行結(jié)果如果圖3-10圖3-10搜索界面運(yùn)行結(jié)果在線聊天功能實(shí)現(xiàn)在線網(wǎng)友的聊天功能publicclassChatextendsJFrameimplementsActionListener,publicclassChatextendsJFrameimplementsActionListener,ListSelectionListener{publicChat(Stringname,BaseMessagebm,Hashtablepnameid, HashtableshareNetPipe,JListpeerlist){}publicvoidaddinfo(Stringpname,Stringptext){ //增加聊天記錄 if(broadcastFlag==true){ pp="all"; } chathistory.append(pname+"say>"+pp+":"+ptext+"\r\n");//文本域 } publicvoidvalueChanged(ListSelectionEvente)//參數(shù)為列表選擇事件 { if(peerlist.isSelectionEmpty()==false)//列表可選項(xiàng)不為空 { pp=(String)peerlist.getSelectedValue();//取得選擇值 if(pp.equals(name)){ JOptionPane.showMessageDialog(null,"不能發(fā)消息給自己,請(qǐng)重新選擇發(fā)送對(duì)象", "Warning",JOptionPane.WARNING_MESSAGE); }else chater.setText(pp);//設(shè)置聊天者 peerlist.clearSelection(); } } publicvoidactionPerformed(ActionEventae){ //事件監(jiān)聽 }}聊天功能運(yùn)行界面如圖3-11圖3-11聊天功能運(yùn)行界面網(wǎng)絡(luò)文件列表publicvoidaddupdate(Hashtablepeerhash,HashtableshareNetPipe,Stringpeerid)throwsExceptpublicvoidaddupdate(Hashtablepeerhash,HashtableshareNetPipe,Stringpeerid)throwsException{ mo=(MyTableModel)filetable.getModel(); intnumRows=mo.getRowCount();//取得表中行數(shù) OutputPipeop2=null; inti; for(i=0;i<numRows;i++){//對(duì)每一行 Strings=(String)mo.getValueAt(i,5);//取得對(duì)等體哈西值 Stringss=sm2pare(s,peerhash);//得到與文件hash值最接近的節(jié)點(diǎn) if(peerid.equals(ss)==false){ do{ op2=(OutputPipe)shareNetPipe.get(ss); }while(op2==null); op2.send((Message)bm2.addfileMessage((String)mo.getValueAt(i, 3),(String)mo.getValueAt(i,2),(String)mo .getValueAt(i,1),(String)mo.getValueAt(i,0), (String)mo.getValueAt(i,5))); mo.removeRow(i); i--; numRows=mo.getRowCount(); } } }網(wǎng)絡(luò)文件列表運(yùn)行結(jié)果如圖3-12圖3-12網(wǎng)絡(luò)文件列表界面關(guān)于系統(tǒng)功能publicclassAboutextendsJFrameimplementsActionListener{ privatefinalJButtonokButton=newJButton("OK");publicclassAboutextendsJFrameimplementsActionListener{ privatefinalJButtonokButton=newJButton("OK"); publicAbout(){ StringIcon="Icon\\Logo.png"; Imageimg=Toolkit.getDefaultToolkit().getImage(Icon); setIconImage(img); finalJTextAreaabout=newJTextArea(); finalJScrollPanejScrollPane=newJScrollPane(about); about.setEditable(false); about.setLineWrap(true); finalContainerc=getContentPane(); c.setLayout(null); c.add(jScrollPane,BorderLayout.CENTER); c.add(okButton); okButton.setBounds(180,320,60,30); okButton.addActionListener(this); setTitle("關(guān)于"); setSize(420,400); setLocation(200,200); setVisible(true); setResizable(false); about.setText(""); about.setFont(newFont("新宋體",Font.PLAIN,15)); try{finalBufferedReaderin=newBufferedReader(newFileReader("About.txt")); Stringline; while((line=in.readLine())!=null){ about.append(line+"\n"); } in.close(); about.setCaretPosition(0); }catch(finalIOExceptione){ e.printStackTrace(); } } publicvoidactionPerformed(finalActionEventae){ if(ae.getSource()==okButton){ this.setVisible(false); } }}關(guān)于界面運(yùn)行結(jié)果如圖3-13圖3-13關(guān)于系統(tǒng)幫助系統(tǒng)功能幫助系統(tǒng),幫助各位網(wǎng)友更好更快的使用本系統(tǒng)。privatevoidopenHelpFile(){privatevoidopenHelpFile(){ try{ Runtime.getRuntime().exec("cmd.exe/cstartHelp.chm");//翻開幫助文件 }catch(Exceptione){ e.printStackTrace(); }}退出系統(tǒng)功能退出系統(tǒng)功能。if(src==fileExitSysItem||src==exitSysButton){if(src==fileExitSysItem||src==exitSysButton){ System.exit(0);結(jié)論JXTA作為P2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論