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

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

對等計算實踐之:構建 P2P 應用程序框架

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

  安裝與執行
  讓我們從安裝的具體細節開始。在可以運行 P2P 應用程序之前,必須下載兩個 jar 文件 -- p2p.jar 和 spp.jar -- 以及配置文件 app.PRoperties。p2p.jar 文件包含 P2P 應用程序自身的類文件。spp.jar 文件包含 P2P 應用程序所使用的消息傳遞庫的類文件。下載這些文件之后,將這兩個 jar 文件和包含配置文件的目錄添加到類路徑中。假如您正在運行 Windows,并且已經將這兩個 jar 文件和配置文件下載到 c:/p2p 目錄,則可以如下設置類路徑:
  
  set CLASSPATH=c:/p2p/p2p.jar;c:/p2p/spp.jar;c:/p2p
  
  假如您正在運行 linux、Solaris 或某個合適的 UNIX 變體,并且已經將這兩個 jar 文件和配置文件下載到 /home/foo/p2p 目錄,可如下設置類路徑:
  
  eXPort CLASSPATH=/home/foo/p2p/p2p.jar:/home/foo/p2p/spp.jar:/home/foo/p2p
  
  (以上命令假設您正在運行 BASH 來作為命令 shell)。將如何在其它流行的 shell(如 CSH)中設置環境變量的問題留給您自己去考慮。一旦設置了類路徑,就可以用以下命令啟動應用程序:
  
  java com.etcee.app.ki.Main
  
  P2P 應用程序將顯示一個別致的信息性標志和一個命令提示來歡迎您。最后再說一遍:我的 P2P 應用程序一定需要 Java 2 平臺。
  
  配置文件
  前幾步將啟動并運行 P2P 應用程序,但是,在能夠很好地使用它之前,必須編輯配置文件。配置文件定義 P2P 應用程序使用的端口、控制的資源以及識別的伙伴。清單 1 演示了每一個定義。
  
  清單 1. 示例配置文件
  
  com.etcee.app.ki.port=7777
  com.etcee.app.ki.resource.0.name=share
  com.etcee.app.ki.resource.0.class=com.etcee.app.ki.resource.file.FileResource
  com.etcee.app.ki.resource.0.arg0=/home/foo/share
  com.etcee.app.ki.resource.1.name=tmp
  com.etcee.app.ki.resource.1.class=com.etcee.app.ki.resource.file.FileResource
  com.etcee.app.ki.resource.1.arg0=/tmp
  com.etcee.app.ki.peer.0=bass:7777
  com.etcee.app.ki.peer.1=salmon:7777
  com.etcee.app.ki.peer.2=perch:7777
  com.etcee.app.ki.peer.3=guppy:7777
  
  第一部分由一行組成,它定義了 P2P 應用程序用來接收其它伙伴連接請求的端口。最好不要改變這行。第二部分定義 P2P 應用程序治理的資源。您可能需要編輯這部分。清單 1 定義了兩個資源:share 和 tmp。從應用程序的觀點來看,資源只是實現 Resource 接口的類的實例,我們將馬上講到這點。資源定義一般具有以下基本形式:
  
  清單 2. 資源定義
  
  com.etcee.app.ki.resource.0.name=
  com.etcee.app.ki.resource.0.class=
  com.etcee.app.ki.resource.0.arg0=
  com.etcee.app.ki.resource.0.arg1=
  .
  .
  name 是給予資源的名稱,它用來生成人們可讀的輸出。class 是 Java 類的名稱,可以將其初始化以創建資源。P2P 應用程序在運行期間動態裝入這個類并將其初始化。在其初始化期間,argN 自變量被傳遞到新初始化的資源。例如,FileResource 類使用這些自變量定義目錄來為文件提供服務。您需要編輯目錄自變量以指向您機器上的某個目錄。
  
  第三部分定義 P2P 應用程序識別的伙伴。每一行都包含伙伴的名稱(或 ip 地址)和伙伴的端口。用這種方式定義伙伴顯然不是可伸縮的解決方案。在以后的文章中,我們將看一種更好的解決方案。
  
  代碼
  除了對等通信采用的 SPP(簡單點到點)包之外,P2P 應用程序不包含很多類。首先,我們先仔細查看最重要的類,最后再看一下 SPP 通信包。
  
  資源
  P2P 應用程序的主要組件是資源。事實上,P2P 應用程序只是答應和控制對已發布資源的遠程訪問。資源可以是任何可尋址的事物 -- 文件系統、電話簿、數據庫和目錄。每個資源都治理零個或多個適當類型的項(文件系統資源治理文件,電話簿資源治理電話號碼)。為演示如何實現資源,我創建了一個簡單的文件系統資源類 FileResource,如清單 3 所示。這個文件系統資源治理零個或多個文件。
  
  清單 3. Resource 接口
  
  public
  interface Resource
  {
  // The initialize() method requires a TTDFactory instance
  // (which the factory uses to create the TTDItem instances
  // it returns from the select() method in response to a
  // query) and a String array (which contains the arguments
  // from the configuration file).
  public
  void
  initialize(TTDFactory ttdfactory, String [] arstring)
  throws ResourceException;
  // The select() method requires a String instance that
  // defines the selection criteria. It returns an array
  // of TTDItems, one for each entry that matches the
  // selection criteria.
  public
  TTDItem []
  select(String stringSelector)
  throws ResourceException;
  }
  Resource 接口定義資源的結構和行為。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉林市| 固阳县| 灯塔市| 宁河县| 陇南市| 营口市| 正宁县| 古浪县| 永寿县| 尚志市| 塘沽区| 潜江市| 徐汇区| 宜州市| 夹江县| 海宁市| 聂拉木县| 界首市| 安西县| 封丘县| 淮阳县| 陇南市| 阿图什市| 岳西县| 绩溪县| 汉川市| 偃师市| 鄂托克旗| 桦甸市| 邵武市| 自贡市| 许昌市| 昔阳县| 花垣县| 嘉善县| 梁山县| 阿拉善右旗| 灵石县| 彝良县| 宁国市| 泾阳县|