国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于JXTA的P2P應用開發

2019-11-18 10:46:56
字體:
來源:轉載
供稿:網友

  P2P計算被Intel喻為第三代網絡革命的“點對點分散式網絡架構”。JXTA是Sun旨在建立P2P通用技術基礎的計劃,定義了一組P2P協議。本文以一個簡單的聊天應用為例,介紹基于JXTA的P2P應用開發。
  概述
  P2P即Peer-to-Peer,稱為對等連接或對等網絡,是一種點對點計算模式。JXTA是項目創始人、Sun首席科學家Bill Joy二十多年醞釀的結晶,“JXTA技術是網絡編程和計算的平臺,用以解決現代分布計算尤其是P2P計算中出現的問題。”JXTA協議是一組為P2P網絡計算而設計的協議,共六種。這六種協議分別是:Peer Discovery PRotocol,Peer Resolver Protocol,Peer Information Protocol,Peer Membership Protocol,Pipe Binding Protocol,以及Peer Endpoint Protocol。利用這些協議,我們可以讓消息跨越多個網絡,發送到網絡上的任意其他Peer。這些協議是所有java P2P應用的基礎,請參見圖一的JXTA應用體系(該圖來自jxta.org)。
   基于JXTA的P2P應用開發(圖一)
  圖一:JXTA應用體系
  本文的例子是一個基于JXTA的P2P應用,Peer可以利用它聊天。它答應Peer把自己注冊到網絡上,發送消息給其他Peer,或者從其他Peer接收消息。
  編寫JXTA應用要求JXTA內核以jxta.jar JAR文件的形成存在。(jxta.jar文件可以從http://download.jxta.org/下載。)jxta.jar文件必須在CLASSPATH中。
  
  構造JXTA應用并不是一件很復雜的事情。只需實現net.jxta.platform.application接口,并提供該接口定義的三個方法:init(),startApp()和stopApp()。下面顯示的SimpleJXTA類就是一個最簡單的JXTA應用(注重,程序必須導入net.jxta.document.Advertisement類和net.jxta.peergroup.PeerGroup接口,init()方法需要它們)。
  
  // 最簡單的JXTA應用
  import net.jxta.platform.Application;
  import net.jxta.document.Advertisement;
  import net.jxta.peergroup.PeerGroup;
  
  public class SimpleJXTA implements Application {
  public void init(PeerGroup group,
   Advertisement adv) {
  }
  public int startApp(String[] args) {
   return 0;
  }
  public void stopApp() {
  }
  }
  作為一個Java應用,上面的程序是否遺漏了static void main()方法呢?其實,與普通Java應用相比,JXTA應用的運行方式有所不同。JXTA應用要求啟動JXTA平臺。JXTA平臺啟動之后,它將啟動所有在jxtaConfig配置文件中指定的應用。JXTA平臺啟動一個應用時,首先調用應用的init()方法,接著調用startApp()方法。
  JXTA聊天程序
  本文的聊天應用改編自JXTA Shell軟件包的Talk程序,設計這個應用的主要目的是為了學習JXTA編程。它很簡單,與基于Java Socket的許多聊天應用相比,它缺少許多高級特性,且不具備強健的錯誤控制機制。然而,這個程序用到了許多重要的JXTA類和接口,初學者可以由此開始深入了解JXTA。
  程序有一個很簡單的GUI,如圖二所示。
   基于JXTA的P2P應用開發(圖二)
  圖二:程序界面
  所有來自聊天用戶的消息,格式為“[用戶名字] 消息”。聊天程序本身報告的信息都以“->”開頭。
  
  聊天程序的業務規則為:
  
  ● 用戶在登錄文本框中輸入自己的名字,并點擊“登錄”按鈕登錄。
  
  ● 用戶名字必須唯一,任何兩個用戶不能有相同的名字。假如某個用戶輸入的名字正在被其他用戶使用,則應用將報告該信息,正在試圖登錄的用戶必須改變自己的名字。
  ● 成功登錄后,用戶在消息輸入框中輸入消息。所有消息將以廣播的形式發送給當前已經登錄的所有用戶,包括消息發送者本身。
  登錄
  登錄的目的不是進行身份驗證,任何擁有聊天程序的人都可以加入聊天。登錄的目的是為了讓其他用戶知道當前用戶的存在,使得聊天程序能夠發送消息,或者從其他聊天用戶接收消息。
  消息通過管道從一個Peer傳遞到另一個Peer。管道由net.jxta.pipe包里面的Pipe接口描述。管道是在兩個JXTA應用或服務之間傳遞消息的核心機制,它為兩個Peer之間的通信提供了簡單的、單向的、異步的通道。換句話說,管道把多個Peer終端連接到了一起。接收端稱為輸入管道,發送端稱為輸出管道。要讓輸出管道能夠把消息發送到接收管道,兩個管道首先必須互相認知對方。例如,聊天應用的一個實例能夠把消息發送給另一個實例之前,兩個實例必須互相認知對方。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潼关县| 麻城市| 双柏县| 乌什县| 北安市| 辽中县| 德令哈市| 北辰区| 平原县| 鹤庆县| 岑巩县| 鄂伦春自治旗| 辽宁省| 同江市| 桂东县| 东莞市| 井研县| 陵川县| 天峻县| 湖口县| 高雄市| 平阴县| 宜君县| 克山县| 平远县| 旺苍县| 南溪县| 龙口市| 舟山市| 沂水县| 平南县| 马山县| 东港市| 通榆县| 宜川县| 固阳县| 尤溪县| 万源市| 郧西县| 苍溪县| 莱芜市|