![局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)_第1頁](http://file4.renrendoc.com/view10/M00/09/27/wKhkGWWohPuAQ9fnAAD-jn07EQw381.jpg)
![局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)_第2頁](http://file4.renrendoc.com/view10/M00/09/27/wKhkGWWohPuAQ9fnAAD-jn07EQw3812.jpg)
![局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)_第3頁](http://file4.renrendoc.com/view10/M00/09/27/wKhkGWWohPuAQ9fnAAD-jn07EQw3813.jpg)
![局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)_第4頁](http://file4.renrendoc.com/view10/M00/09/27/wKhkGWWohPuAQ9fnAAD-jn07EQw3814.jpg)
![局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)_第5頁](http://file4.renrendoc.com/view10/M00/09/27/wKhkGWWohPuAQ9fnAAD-jn07EQw3815.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)目錄摘要1Abstract11.緒論21.1背景2課題研究的目的及意義21.3課題研究內(nèi)容31.4本文組織結(jié)構(gòu)3技術(shù)概述42.1P2P的概念42.2P2P的技術(shù)特點42.3P2P和C/S的比擬52.4P2P的實際應用53.局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)73.1系統(tǒng)設計73.1.1系統(tǒng)啟動模塊83.1.2資源共享模塊83.1.3資源搜索模塊83.1.4在線聊天模塊93.1.5網(wǎng)絡文件列表模塊93.1.6其他系統(tǒng)模塊93.2系統(tǒng)實現(xiàn)103.2.1系統(tǒng)啟動功能103.2.2資源共享功能113.2.3資源搜索功能133.2.4在線聊天功能143.2.5網(wǎng)絡文件列表153.2.6關(guān)于系統(tǒng)功能163.2.7幫助系統(tǒng)功能183.2.8退出系統(tǒng)功能18結(jié)論19參考文獻20致謝21局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)XE摘要:近年來,P2P技術(shù)在網(wǎng)絡上得到廣泛應用,成為網(wǎng)絡技術(shù)的新熱點。P2P技術(shù)與傳統(tǒng)的客戶端/效勞器(C/S)或瀏覽器/效勞器(B/S)相比,有明顯的技術(shù)優(yōu)勢,在P2P網(wǎng)絡中每一個節(jié)點〔Peer〕之間的關(guān)系是對等的,同時具有Client和Server的特點。他們可以直接通信,無需依賴集中式效勞器。P2P技術(shù)在網(wǎng)絡應用上有很大的開展空間。JXTA是為搭建P2P網(wǎng)絡制定的一組協(xié)議,這組協(xié)議描述和實現(xiàn)了P2P網(wǎng)絡應用中的各種問題,為P2P網(wǎng)絡應用開發(fā)提供了一個統(tǒng)一的開發(fā)平臺。本系統(tǒng)就是在深入了解P2P技術(shù)和JXTA實現(xiàn)平臺的根底上,設計實現(xiàn)的基于JXTA的P2P局域網(wǎng)資源共享系統(tǒng),在局域網(wǎng)內(nèi)實現(xiàn)點對點的文件上傳和文件下載功能。本系統(tǒng)的優(yōu)點是在一個局域網(wǎng)內(nèi)每個Windows平臺的客戶機用戶只需輸入一個用戶名和密碼登錄系統(tǒng),即可與局域網(wǎng)內(nèi)的其他登錄用戶即時聊天,文件傳輸。關(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ù)界的一個熱門話題。P2P帶來的一個顯著的變化是改變了“內(nèi)容〞所在的位置,內(nèi)容正在從“中心〞走向“邊緣〞,信息的共享不再完全依賴中心效勞器。互聯(lián)網(wǎng)技術(shù)以往的開展軌跡向人們預示著,P2P這一新的網(wǎng)絡技術(shù)思想,最終也會對網(wǎng)絡結(jié)構(gòu)本身,網(wǎng)絡中的信息使用和傳播方式、以及人們使用互聯(lián)網(wǎng)的方式等產(chǎn)生深遠的影響。從目前的應用來看,P2P的應用還主要表達在大范圍的共享、搜索的優(yōu)勢上?;蛘哒f是更好地解決了網(wǎng)絡上五大類型[6]的應用:分布式計算、協(xié)同工作、搜索引擎、文件共享和即時通信。盡管對P2P存在著這樣那樣的疑慮,許多IT專家仍然相信該技術(shù)將徹底推翻現(xiàn)在抑制分布式計算開展的藩籬?,F(xiàn)在的桌面系統(tǒng)的性能遠遠超過以前的許多效勞器,這為P2P的開展提供了巨大的硬件根底。而隨著寬帶、高速網(wǎng)絡的開展,PC將釋放出前所未有的潛能,而虛擬專用網(wǎng)絡軟件也將為P2P的開展提供保障。如果說過去的幾年P(guān)2P技術(shù)給業(yè)界帶來了一個新的技術(shù)思路,那么未來幾年P(guān)2P技術(shù)可能會帶來巨大的商業(yè)價值。P2P技術(shù)對于寬帶網(wǎng)絡的優(yōu)化是無法估量的,其在多媒體文件傳輸領(lǐng)域、有線通信、無線通信領(lǐng)域蘊含著極大的商機。P2P網(wǎng)絡不僅降低了硬件設備投入本錢和網(wǎng)絡內(nèi)容供給本錢,更重要的是其消除了中央效勞器信息轉(zhuǎn)發(fā)引致的瓶頸效應,同時對于分布式的邊緣內(nèi)容的充分利用更是開拓了一個新的應用思路。P2P技術(shù)平臺也并非一個簡單的文件傳輸系統(tǒng),更是下一代的互聯(lián)網(wǎng)絡的典型和初期架構(gòu)形式,中央效勞器在融合了P2P網(wǎng)絡的互聯(lián)網(wǎng)中只是承當了用戶信息的管理和局部信息的發(fā)布工作,而不必承當沉重的數(shù)據(jù)轉(zhuǎn)發(fā)工作,有效消除了信息孤島的存在及信息傳輸過程中的瓶頸問題,同時對承載了多達60%的弱鏈接模塊的互聯(lián)網(wǎng)絡流量進行了有效的管理。目前,互聯(lián)網(wǎng)上的各種效勞,不管采用B/S模式還是采用C/S模式,都是以網(wǎng)絡效勞器為中心的。網(wǎng)絡用戶向效勞器發(fā)送請求,然后從效勞器得到相應的回應信息,用戶之間的交流都高度依賴于網(wǎng)絡效勞器,無法直接交流信息。隨著Internet的日益開展和普及,它在某種程度上開始制約著Internet的開展。而P2P方式那么是以用戶為中心,所有的用戶都是平等的伙伴,相互之間可以直接交流信息。P2P是一種相對較新的技術(shù),以P2P技術(shù)為根底的流行軟件能實現(xiàn)不同的任務。但是由于開發(fā)人員解決相同的問題并重寫相似的根底實現(xiàn),使得應用程序的開發(fā)效率不高,并且,大多數(shù)的應用程序只適用于某一種特定的平臺,且相互之間不能進行通信和數(shù)據(jù)共享。JXTA[2]工程的其中一個目的就是提供一個平臺,該平臺帶有P2P網(wǎng)絡所必需的根本功能。P2P資源共享系統(tǒng)[8]是一個用于對等網(wǎng)絡的數(shù)據(jù)共享系統(tǒng),它可以提供高效率的、魯棒的和負載平衡的文件共享功能。P2P的最大優(yōu)勢是其不依賴效勞器調(diào)用網(wǎng)絡資源的靈活性,同時它采用了類似于負載均衡的機制,其基于UDP的連接方式不需要穩(wěn)定的網(wǎng)絡連接即可實現(xiàn)節(jié)點間的通信。這些正是C/S、B/S架構(gòu)所欠缺的。相對于目前流行的C/S、B/S的“集中式〞網(wǎng)絡結(jié)構(gòu),P2P最大的特點在于“分散〞。它讓網(wǎng)絡邊緣的節(jié)點更趨智能化,網(wǎng)絡中所有的計算、存儲和網(wǎng)絡連接能力都能夠平均地分布在非集中式網(wǎng)絡的“對等伙伴〞上。實踐證明,P2P所提供的基于節(jié)點的獨立、動態(tài)的連接方式,徹底顛覆了以往企業(yè)中計算資源的分配規(guī)那么,不僅讓網(wǎng)絡更具靈活性,還很好地解決了集中式計算模式最為頭痛的網(wǎng)絡擁塞問題。只要對P2P網(wǎng)絡中分散的節(jié)點加以有效的控制和管理,P2P應用完全能夠在企業(yè)環(huán)境中大展身手,使其具有重要的意義。1.3課題研究內(nèi)容本論文首先對現(xiàn)有P2P技術(shù)現(xiàn)狀進行了研究,總結(jié)了現(xiàn)有P2P應用的特點。對SUN公司的開源JXTA工程進行了深入的研究,對JXIA協(xié)議[3]和JXTA的J2SE實現(xiàn)參考模型提供的效勞進行了分析。采用了一個P2P應用開發(fā)的框架模型,給出了P2P幾個關(guān)鍵問題的實施策略,并基于JXTA[7]的J2SE參考模型加以實現(xiàn)。1.4本文組織結(jié)構(gòu)各章內(nèi)容安排如下:第1章緒論:闡述了本文的背景及本人所做工作和本文的組織結(jié)構(gòu)。第2章P2P技術(shù)概述:介紹了P2P的概念、然后把傳統(tǒng)的C/S模型和P2P模型進行了比照,同時也給出了P2P可能的應用范圍第3章基于P2P技術(shù)的資源共享系統(tǒng)的研究與應用:給出了該系統(tǒng)的詳細設計和有關(guān)主要代碼類的實現(xiàn)。2P技術(shù)概述2.1P2P的概念目前,在學術(shù)界、工業(yè)界對于P2P沒有一個統(tǒng)一的定義,下面是幾個常用的定義[10]:P2P是一種計算機互聯(lián)網(wǎng)絡。它允許使用同一種連接程序的用戶可以直接從對方計算機硬盤上讀取文件。P2P是一種共享資源的應用程序。它運行在個人電腦上并且通過網(wǎng)絡和其他人共享資源。P2P網(wǎng)絡通過各主機的相互連接來共享資源而不是通過中心效勞器。P2P是一種分布式網(wǎng)絡。網(wǎng)絡的參與者共享他們所擁有的一局部硬件資源(處理能力、存儲能力、網(wǎng)絡連接能力、打印機等),這些共享資源需要由網(wǎng)絡提供效勞和內(nèi)容,能被其它對等節(jié)點(Peer)直接訪問而無需經(jīng)過中間實體。在此網(wǎng)絡中的參與者既是資源(效勞和內(nèi)容)提供者(Server),又是資源(效勞和內(nèi)容)獲取者(Client)。雖然上述定義稍有不同,但共同點都是P2P打破了傳統(tǒng)的Client/Server(C/S)模式,在網(wǎng)絡中的每個節(jié)點的地位都是對等的。每個節(jié)點既充當效勞器,為其他節(jié)點提供效勞,同時也享用其他節(jié)點提供的效勞。2.2P2P的技術(shù)特點P2P技術(shù)特點主要表達在以下幾個方面[4]:非中心化。網(wǎng)絡中的資源和效勞分散在所有節(jié)點上,信息的傳輸和效勞的實現(xiàn)都直接在節(jié)點之間進行,可以無需中間環(huán)節(jié)和效勞器的介入,防止了可能的瓶頸。P2P的非中心化的根本特點,帶來了其在可擴展性、健壯性等方面的優(yōu)勢。可擴展性。在P2P網(wǎng)絡中,隨著用戶的參加,不僅效勞的需求增加了,系統(tǒng)整體的資源和效勞能力也在同步地擴充,始終能較容易地滿足用戶的需要。整個體系是全分布的,不存在瓶頸,理論上其可擴展性幾乎可以認為是無限的。健壯性。P2P架構(gòu)天生具有耐攻擊、高容錯的優(yōu)點。由于效勞是分散在各個節(jié)點之間進行的,局部節(jié)點或網(wǎng)絡遭到破壞對其它局部的影響很小。P2P網(wǎng)絡一般在局部節(jié)點失效時能夠自動調(diào)整整體拓撲,保持其它節(jié)點的連通性。P2P網(wǎng)絡通常都是以自組織的方式建立起來的,并允許節(jié)點自由地參加和離開,P2P網(wǎng)絡還能夠根據(jù)網(wǎng)絡帶寬、節(jié)點數(shù)、負載等變化不斷地做自適應式的調(diào)整。高性能/價格比。性能優(yōu)勢是P2P被廣泛關(guān)注的一個重要原因。隨著硬件技術(shù)的開展,個人計算機的計算和存儲能力以及網(wǎng)絡帶寬等性能依照摩爾定理高速增長。采用P2P架構(gòu)可以有效地利用互聯(lián)網(wǎng)中散布的大量普通節(jié)點,將計算任務或存儲資料分布到所有節(jié)點上。利用其中閑置的計算能力或存儲空間,到達高性能計算和海量存儲的目的。通過利用網(wǎng)絡中的大量空閑資源,可以用更低的本錢提供更高的計算和存儲能力。隱私保護。在P2P網(wǎng)絡中,由于信息的傳輸分散在各節(jié)點之間進行而無需經(jīng)過某個集中環(huán)節(jié),用戶的隱私信息被竊聽和泄漏的可能性大大縮小。此外,目前解決Internet隱私問題主要采用中繼轉(zhuǎn)發(fā)的技術(shù)方法,從而將通信的參與者隱藏在眾多的網(wǎng)絡實體之中。在傳統(tǒng)的一些匿名通信系統(tǒng)中,實現(xiàn)這一機制依賴于某些中繼效勞器節(jié)點。而在P2P中,所有參與者都可以提供中繼轉(zhuǎn)發(fā)的功能,因而大大提高了匿名通訊的靈活性和可靠性,能夠為用戶提供更好的隱私保護。負載均衡。P2P網(wǎng)絡環(huán)境下由于每個節(jié)點既是效勞器又是客戶機,減少了對傳統(tǒng)C/S結(jié)構(gòu)效勞器計算能力、存儲能力的要求,同時因為資源分布在多個節(jié)點,更好的實現(xiàn)了整個網(wǎng)絡的負載均衡。2.3P2P和C/S的比擬目前,互聯(lián)網(wǎng)的主要模式是Client/Server(C/S)。它要求有高性能的效勞器,配合各種軟件來集中處理信息,同時還響應網(wǎng)絡中其它客戶端的請求。這種結(jié)構(gòu)導致網(wǎng)絡中的內(nèi)容都向少數(shù)效勞器集中,效勞器成為網(wǎng)絡中的主宰。P2P模式相對于C/S模式有如下主要優(yōu)點[5]:資源的高度利用率。在P2P網(wǎng)絡上,閑散資源有時機得到利用,所有節(jié)點的資源總和構(gòu)成了整個網(wǎng)絡的資源,整個網(wǎng)絡可以被用作具有海量存儲能力和巨大計算處理能力的超級計算機。在C/S模式下,縱然客戶端有大量的閑置資源,也無法被利用。良好的網(wǎng)絡性能。隨著節(jié)點的增加,C/S模式下,效勞器的負載就越來越重,形成了系統(tǒng)的瓶頸,一旦效勞器崩潰,整個網(wǎng)絡也隨之癱瘓。而在P2P網(wǎng)絡中,每個對等體都是一個活動的參與者,每個對等點都向網(wǎng)絡奉獻一些資源,如存儲空間、CPU周期等。所以,對等點越多,網(wǎng)絡的性能越好,網(wǎng)絡隨著規(guī)模的增大而越發(fā)穩(wěn)固。良好的尋址方式?;趦?nèi)容的尋址方式處于一個更高的語義層次,因為用戶在搜索時只需指定具有實際意義的信息標識而不是物理地址,每個標識對應包含這類信息的節(jié)點的集合。這將創(chuàng)造一個更加精煉的信息倉庫和一個更加統(tǒng)一的資源標識方法。低效勞本錢。信息在網(wǎng)絡設備間直接流動。使網(wǎng)絡高速及時,降低中轉(zhuǎn)效勞本錢。資源的均勻分布。C/S模式下的互聯(lián)網(wǎng)是完全依賴于中心點效勞器的,沒有效勞器,網(wǎng)絡就沒有任何意義。而P2P網(wǎng)絡中,弱化效勞器的功能,甚至取消效勞器,任意兩臺PC互為效勞器及客戶機,即使只有一個對等點存在,網(wǎng)絡也是活動的,節(jié)點所有者可以隨意地將自己的信息發(fā)布到網(wǎng)絡上。P2P的技術(shù)方式將導致信息數(shù)據(jù)本錢資源向所有用戶的PC均勻分布,即“邊緣化〞趨勢。但是,P2P也有缺乏之處。P2P不易于管理,而對C/S網(wǎng)絡,只需在中心點進行管理。隨之而來的是P2P網(wǎng)絡中數(shù)據(jù)的平安性難于得到保證。因此,在平安策略、備份策略等方面,P2P的實現(xiàn)要復雜一些。另外,由于對等點可以隨意地參加或退出網(wǎng)絡,會造成網(wǎng)絡帶寬和信息存在的不穩(wěn)定。2.4P2P的實際應用P2P目前的主要應用表達在大范圍的共享和搜索等方面。它能夠更好地解決網(wǎng)絡上三大類型的應用[6]:對等計算、協(xié)同工作、文件交換。對等計算。通過眾多計算機來完成超級計算機的功能,一直是科學家夢寐以求的事情。采用P2P技術(shù)的對等計算,可以把網(wǎng)絡中的眾多計算機暫時不用的計算能力連結(jié)起來,使用積累的能力執(zhí)行超級計算機的任務。任何需要大量數(shù)據(jù)處理的行業(yè)都可從對等計算中獲利,如天氣預報、動畫制作、基因組的研究等。有了對等計算之后,就不再需要昂貴的超級計算機了。對等計算的開展本質(zhì)上是以PC機資源的有效利用為根本出發(fā)點的,通過網(wǎng)絡共享CPU資源。協(xié)同工作。公司機構(gòu)的日益分散,給員工和客戶提供輕松、方便的消息和協(xié)作的工具,變得日益重要。網(wǎng)絡的出現(xiàn),使協(xié)同工作成為可能。但傳統(tǒng)的WEB方式實現(xiàn),給效勞器帶來了極大的負擔,造成了昂貴的本錢支出。P2P技術(shù)的出現(xiàn),使得互聯(lián)網(wǎng)上任意兩臺PC都可建立實時的聯(lián)系,建立了這樣一個平安、共享的虛擬空間,人們可以進行各種各樣的活動,這些活動可以同時進行,也可以交互進行。P2P技術(shù)可以幫助企業(yè)和關(guān)鍵客戶,以及合作伙伴之間建立起一種平安的網(wǎng)上工作聯(lián)系方式,因此基于P2P技術(shù)的協(xié)同工作也受到了極大的重視。文件交換。文件交換的需求直接引發(fā)了P2P技術(shù)熱潮。在傳統(tǒng)的WEB方式中,要實現(xiàn)在某個網(wǎng)站上搜索所需要的文件,然后下載,這種方式的不便之處不言而喻。電子郵件雖然方便了個人間文件傳遞問題,但卻無法解決大范圍的交換。這也是WEB的重要缺陷,Napster就是在此情況下橫空出世,抓住人們對MP3喜歡的需求,Napster的Mp3交換直接引發(fā)了網(wǎng)絡的P2P技術(shù)革命。3.局域網(wǎng)P2P資源共享軟件的設計與實現(xiàn)3.1系統(tǒng)設計本文在SUN公司提出的JXTA架構(gòu)根底上,采用純P2P組網(wǎng)模式設計并實現(xiàn)了P2P網(wǎng)絡資源共享系統(tǒng),系統(tǒng)主要實現(xiàn)的功能有:實現(xiàn)了對等網(wǎng)絡中組的創(chuàng)立、查找、參加和離開,各對等點的共享資源的參加、刪除、搜索以及下載,在線網(wǎng)友聊天功能.系統(tǒng)分為以下幾個模塊(如圖3-1):系統(tǒng)系統(tǒng)系統(tǒng)啟動模塊資源共享模塊資源搜索模塊在線聊天模塊網(wǎng)絡文件列表關(guān)于系統(tǒng)模塊退出系統(tǒng)模塊幫助系統(tǒng)模塊圖3-1系統(tǒng)結(jié)構(gòu)圖界面設計:系統(tǒng)采用標準Windows窗口設計,主要分為:標題欄、菜單欄、工具欄和當前系統(tǒng)信息顯示。系統(tǒng)主界面設計如圖3-2。標題欄:顯示本軟件的中英文名稱及圖標。菜單欄:分為文件、導航、幫助菜單。工具欄:主要包括資源上傳按鈕、資源搜索按鈕、在線聊天按鈕、網(wǎng)絡文件列表按鈕、關(guān)于系統(tǒng)按鈕、幫助系統(tǒng)按鈕和退出系統(tǒng)按鈕。當前系統(tǒng)信息顯示:主要包括當前節(jié)點名、資源組和成員列表。圖3-2系統(tǒng)主界面設計3系統(tǒng)啟動模塊初始化系統(tǒng)環(huán)境變量,調(diào)用JXTA協(xié)議自帶的登錄界面,輸入節(jié)點名和密碼,登錄系統(tǒng)。第一次使用請查看系統(tǒng)幫助。3資源共享模塊通過該模塊可以對共享的資源進行添加和刪除等根本操作。它是通過ShareManager類利用CMS效勞對共享資源進行管理的,通過ShareMonitor類對共享資源進行監(jiān)控的。(l)共享內(nèi)容的添加。當用戶調(diào)出添加共享的對話框時,就可以在對話框內(nèi)選擇要共享的文件。添加完共享內(nèi)容后,就可以在對等組看到自己新添加的共享內(nèi)容。(2)共享內(nèi)容的刪除。用戶在對等組內(nèi)找到要求刪除的共享內(nèi)容,然后刪除自己想要刪除的共享內(nèi)容。資源共享模塊界面如圖3-3圖3-3資源共享界面3資源搜索模塊用戶調(diào)出搜索共享內(nèi)容的對話框,然后輸入查找共享內(nèi)容的關(guān)鍵字。就可以完成查找的功能,當找到共享內(nèi)容后,本系統(tǒng)會自動將內(nèi)容添加到對等組中。查看文件所在節(jié)點,上傳者等信息。資源搜索模塊界面如圖3-4圖3-5資源搜索界面3在線聊天模塊提供在線網(wǎng)友的聊天限時通信功能,增進網(wǎng)友之間的交流與互動。在線聊天模塊界面如圖3-6圖3-6在線聊天界面3網(wǎng)絡文件列表模塊查看網(wǎng)絡中所有共享的資源。網(wǎng)絡文件列表模塊如圖3-6圖3-6網(wǎng)絡文件列表界面其他系統(tǒng)模塊〔1〕關(guān)于系統(tǒng)模塊介紹系統(tǒng)相關(guān)內(nèi)容,如版本、開發(fā)語言及環(huán)境,聯(lián)系作者等?!?〕幫助系統(tǒng)模塊提供系統(tǒng)使用的詳細幫助,使用廣闊網(wǎng)友能更好更快的使用本軟件。〔3〕退出系統(tǒng)模塊完成系統(tǒng)關(guān)閉退出功能。3.2系統(tǒng)實現(xiàn)系統(tǒng)開發(fā)環(huán)境系統(tǒng)開發(fā)操作系統(tǒng):WindowsXP系統(tǒng)開發(fā)語言:Java系統(tǒng)開發(fā)工具:Eclipse開發(fā)所用API:JXTAJava實現(xiàn)包系統(tǒ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();}運行結(jié)果如圖3-7,3-8圖3-7系統(tǒng)啟動界面圖3-8系統(tǒng)運行主界面資源共享功能//上傳功能:intresult=chooser.showOpenDialog(this);//上傳功能:intresult=chooser.showOpenDialog(this); Filefile=chooser.getSelectedFile(); if(result==JFileChooser.APPROVE_OPTION){ StringfileHashID=hash.getMD5ofStr(file.getName());//得到與文件Hash值最近的節(jié)點號 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é)點不在本機上就發(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é)點就是本機,在網(wǎng)絡索引表中增加該條信息 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é)點IDStringid=smpare(i,peerhash1); Stringfilename=(String)model.getValueAt(row,0); Stringfilepath=(String)model.getValueAt(row,1); model.removeRow(row); //sendthefiledeletemessagetoonewhokeepthe //fileindex //要刪除的文件索引在遠程 if(id.equals(peerID)==false){ OutputPipeop1=(OutputPipe)shareNetPipe1.get(id); op1.send((Message)bm1.removefileMessage(peerID,filename,filepath)); }else{//要刪除的文件索引在本地 netfilelist1.removefileRow(filename,filepath,id); } }catch(Exceptioned){ ed.printStackTrace(); JOptionPane.showMessageDialog(null,"ShareWrong"); }資源共享運行結(jié)果如圖3-9圖3-9資源共享界面資源搜索功能輸入關(guān)鍵字.搜索自己想要尋找的內(nèi)容。try{try{ Stringtext=searchnameField.getText(); if(text.equals("")){ JOptionPane.showMessageDialog(null,"請輸入要查詢的文件","Warning", JOptionPane.WARNING_MESSAGE); }else{ Stringfilehash=hash.getMD5ofStr(text);//text生成哈西 StringPID=smpare(filehash,peerhash);//得到與文件Hash值最近的節(jié)點關(guān)鍵字 OutputPipeop1=null; if(PID.equals(pid)==false){//非本機對等節(jié)點 do{ op1=(OutputPipe)shareNetPipe.get(PID); }while(op1==null); op1.send((Message)bm.searchfileMessage(pid,text)); }else{//如果最近的節(jié)點就是本機,直接在自己的網(wǎng)絡索引表中查找 netfilelist.searchlocal(text,searchtable); } } }catch(Exceptionee){ ee.printStackTrace(); }資源搜索運行結(jié)果如果圖3-10圖3-10搜索界面運行結(jié)果在線聊天功能實現(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)//列表可選項不為空 { pp=(String)peerlist.getSelectedValue();//取得選擇值 if(pp.equals(name)){ JOptionPane.showMessageDialog(null,"不能發(fā)消息給自己,請重新選擇發(fā)送對象", "Warning",JOptionPane.WARNING_MESSAGE); }else chater.setText(pp);//設置聊天者 peerlist.clearSelection(); } } publicvoidactionPerformed(ActionEventae){ //事件監(jiān)聽 }}聊天功能運行界面如圖3-11圖3-11聊天功能運行界面網(wǎng)絡文件列表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++){//對每一行 Strings=(String)mo.getValueAt(i,5);//取得對等體哈西值 Stringss=sm2pare(s,peerhash);//得到與文件hash值最接近的節(jié)點 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)絡文件列表運行結(jié)果如圖3-12圖3-12網(wǎng)絡文件列表界面關(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)于界面運行結(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學生會成員新學期工作計劃
- 中學教學年終工作總結(jié)
- 舞蹈教學工作計劃
- 電站運行維護承包合同范本
- 不銹鋼欄桿、扶手制作安裝合同范本
- 華師大版數(shù)學八年級上冊《直角三角形三邊的關(guān)系》聽評課記錄
- 長葛環(huán)?;炷链u施工方案
- 新人教版七年級數(shù)學上冊 2.1.1《單項式》聽評課記錄
- 小學聽評課記錄范文大全
- 湘師大版道德與法治九上5.2.2《公平正義促和諧》聽課評課記錄
- 拆遷征收代理服務投標方案
- 完形療法概述
- SL631-637-2012-水利水電工程單元工程施工質(zhì)量驗收評定標準
- 商標基礎(chǔ)知識課件
- 監(jiān)理質(zhì)量管理講義監(jiān)理工作的基本知識
- 涉詐風險賬戶審查表
- 煙花爆竹考試真題模擬匯編(共758題)
- 2023年大學英語四級考試模擬真題及答案
- 四年級數(shù)學上冊口算天天練4
- 蘇教版二年級數(shù)學寒假輔導提高班課件 第1講 眼花繚亂的數(shù)據(jù)(66張PPT)
- 水利水電工程監(jiān)理平行檢測表部分
評論
0/150
提交評論