摘 要:本文簡要介紹了P2P網絡以及JAVA技術,同時從程序開發、網絡通信等方面分析了JAVA技術在P2P環境下的實際運用,以期拓展JAVA技術的實際運用,從而使JAVA技術的運用更為豐富。
關鍵詞:P2P環境;JAVA技術;實際運用
一、P2P技術介紹
P2P網絡全稱為“peer to peer”,部分人則認為是“person to person”。Peer代表具有同等地位以及能力的人,如伙伴以及同事。所以,P2P便可以理解為同事對同事,即對等網。對等網絡也可稱之為對等組,網絡中所有計算機擁有的功能一致,沒有主從差異。每臺計算機不僅可以作為服務器,由用戶指定共享資源,從而達到資源共享的目的,同時也可以作為工作站使用。Intel對P2P的定義如下:P2P指利用系統之間直接相互傳輸信息完成計算機信息數據的共享網絡。其中,信息資源指處理器時鐘、磁盤空間以及信息交換等。
相比以服務器客戶端技術為基礎開發的應用,基于P2P環境下運行的應用,由于其自身的非中心化,所以必然具有更為良好的拓展性,且能夠有效保護客戶隱私,提高計算機性能以及完成均勻負載。由于上述原因,P2P網絡技術在各方面的運用極為廣泛,P2P網絡技術的不斷開發也成為熱門關注的熱點。基于P2P網絡技術開發的軟件,需要分布至每個用戶系統當中進行使用,但用戶不同,計算機所使用的系統之間也存在差異。所以P2P網絡的應用范圍也受到一定限制。
P2P網絡具有以下特點:其一,網絡中的計算機數量較少,通常情況下,對等網絡的計算機數量不超過10臺。其二,利用最為直接的交換方式以達到資源以及服務共享的目的,各個節點擁有相同地位,在作為服務器的同時,也充當客戶機的角色。其三,因為對等網絡無需使用專業的服務器進行網絡支持,所以也不用其他組件以提升網絡整體性能,所以組網成本不高,往往用于家庭或是中小型企業之中。
二、JAVA技術簡述
JAVA是一種程序語言,其應用范圍較廣,具有高效性以及通用性。JAVA技術具有一次性編寫但可以在任何系統中使用的特點,從而使P2P應用程序的應用范圍得到拓展,令P2P應用能應用于不同的客戶端之中。不僅如此,如今P2P系統的使用數量雖然明顯增多,但彼此之間處于封閉狀態,只在自身應用范圍當中占領位置。故而,SUN公司開發了完整的開源P2P項目,即JXTA,為P2P的應用構建了一個平臺,使得以P2P應用得以在相同的平臺之上構建,通過使用該套JAVA類庫,能夠使P2P網絡中JAVA的應用更為簡化。
JXTA開發的目的是為了構建簡易但能夠通用的P2P平臺,以接納不同類型的網絡服務。利用JXTA技術所構建的平臺定義了一套以XML為基礎生成的協議,以滿足peer,即對等點所形成的網絡需要通用這一功能的要求。需要注意,該套協議與操作系統、所用設備、開發過程中所用語言之間并沒有聯系,其是獨立的個體。如今,JXTA技術得到進一步發展,其功能也有所提升,已然作為P2P研發應用的專用平臺。
三、JAVA技術在P2P環境下的實際運用
(一)程序開發
程序開發人員若要在P2P環境下運用JAVA技術進行程序開發,應先在系統當中安裝jdk程序,從而為程序開發提供開發環境。等待jdk程序安裝完畢之后,程序開發人員還需從網頁中下載JXSE類庫,其中含有大量P2P應用程序在開發過程中所需使用的類庫。上述類庫文件會以多個文件包的形式向開發人員提供。至于集成開發環境,設計人員可使用Netbeans。構建項目時,開發人員還應將JXSE類庫全部加載至項目類路徑之中。
程序開發環境建立完畢之后,開發人員開始以JXSE為基礎進行P2P應用程序的開發。因為在開發過程中,JXSE可以將繁雜的P2P底層開發工作封裝,對大量接口以及API進行抽象,以便P2P應用開發人員進行調用,使得開發人員在P2P環境下運用JAVA技術開發應用的難度大大降低。開發人員利用JXSE進行P2P應用程序的開發流程基本如下:添加默認的NetPeerGroup,或是于默認狀態下的對等組下方進行創建,也可以添加其他對等組。之后等待獲得對等組所提供的發現服務,通過該服務分享自己計算機當中的資源,同時也可以搜索其他計算機中的資源,所有資源以通告的形式進行表示。若該計算機需要同某一節點即時通訊,便需借助管道通告建立輸入以及輸出用管道,隨后將需要傳輸的信息數據封裝為消息,利用所建立的管道進行傳輸,令雙方都可傳輸或接收數據。應用便是在上述流程之上建立而成的,通過上述流程可以分析得出,由于JXSE的存在,使得開發人員無需考慮P2P底層,程序開發難度下降。
(二)網絡通信
P2P環境下,JAVA技術不僅可以用于開發軟件,同時也可以實現JAVA網絡通信。具體實現方法如下:
其一,先獲取網絡當中具有通信功能端點的IP以及端口。設存在一個端點A,該端點需要與P2P網絡當中的其他端點實現通信。則該端點需先將自身IP以及端口告知其他端點。其他所有端點在收到端點A傳輸的信息之后,便獲取了端點A的端口信息以及IP,之后向端點A告知自身IP以及端口信息。端點A可利用多播技術完成向多個端點傳輸信息的任務。多播技術節省了網絡寬帶,也使得數據傳輸效率大大提高,避免了主干網出現擁擠、堵塞的現象。不僅如此,數據包可來源于不同的物理網絡。所以,開發人員應使用多播信息的方式傳輸自身IP以及端口信息。JAVA當中,發送多播信息的具體步驟如下:第一步,確認發送的實際內容。選取專門用于多播的D類IP地址,即(224.0.0.1至239.255.255.255),同時建立一個多播組。利用特定的端口設立多播套接字。第二步,加入該多播組,建立數據包封,添加需要發送的多播信息,之后點擊發送。
其二,與獲取的IP以及端口信息建立端點通信。以JAVA實現TCP通信的方式為例,用戶借助Socket(InetAddress addr,int port)以及Socket(String host,int port)建立客戶端套接字。之后使用ServerSocket(int port)建立服務器端套接字。Port端口便是通過服務器監測請求相連的端口,利用調用accept()返還近期建立的Socket目標,該目標與客戶應用的IP以及端口號向綁定。之后借助調用Socket中getInputStream()方式取得錄入流讀傳輸來的信息,從而建立網絡通信。
參考文獻:
[1] 邵俊.基于java平臺的P2P應用程序的實現[J].武漢大學學報,2014.
作者簡介:金宏亮(1991-),男,遼寧大連人,研究方向:信息科學與技術。