<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jwethand

    Nothing is particularly hard if you divide it into small jobs.
    posts - 21, comments - 18, trackbacks - 0, articles - 20

    JXTA-JAVA P2P網絡編程技術(入門篇)

    Posted on 2006-12-28 16:08 jwethand 閱讀(817) 評論(0)  編輯  收藏

    1.前言

    ?????? 最近,P2P(Peer-to-Peer)又成為了因特網上的一個熱點。P2P是因特網的一種應用模式,其意思是指網絡上的任何設備(包括大型機、PC機、PDA、手機、機頂盒等等)都可以平等地直接進行連接并進行協作。想比當前因特網上主流的應用模式Client/Server或者Client/Service而言,P2P具有自己鮮明的特點和優勢。(這也是我對它著迷的地方。呵呵……J)

    ?????? 有了P2P技術,因特網不需要一個大型的服務器,這對于有些行業(尤其是網絡游戲)來說,是非常“幸運”的!因為P2P技術都很方便的實現你只化很少的money就可以達到你想要的效果。(是不是心動了?呵呵……J)

    ?????? 一些常見的P2P應用程序:聊天程序,游戲(尤其網絡游戲),文件共享,協同工作和白板。

    ?????? 當然,P2P網絡也應具備的下列特點:

    ①???? 互操作性:P2P系統很容易的找到并連接對方,彼此進行交流。

    ②???? 平臺無關性:P2P系統應該設計成獨立于編程語言如C,Java等,獨立于系統平臺如Windows和UNIX,獨立于網絡平臺如TCP/IP和BLUETOOTH。

    ③???? 廣泛性:P2P系統可以運行在任何有數字處理功能的設備上。

    2.JXTA是什么

    ?????? 首先,JXTA是為了構建P2P網絡而制訂的一組協議,是解決構建P2P網絡必須要解決的問題的方法。共有六個協議(關于這些協議后面會詳細的談的)。

    ?????? 其次,JXTA是P2P應用程序開發的運行平臺。目前,JXTA首先推出了基于Java的參考實現的。

    它三層組成:如圖1-1所示:

    圖1-1? JXTA的層次結構

    第一層是JXTA核心層,它包含了服務所必需要的核心功能,包括Peer、對等組、Peer發現、Peer通信、Peer監視和相關的安全原語;第二層是服務層,它提供了訪問JXTA協議的接口,包括對于P2P網絡不是必需的,但很通用的功能,如查找、共享、索引、代碼緩存和內容緩存的機制;第三層是應用層,它使用服務來訪問JXTA網絡和JXTA提供的功能,包括了應用JXTA服務開發出來得完整的P2P應用程序,如myJXTA,JXTA-CAD等應用程序。

    ?????? 下面簡略的介紹一下JXTA的一些概念吧:

    3.JXTA的一些概念

    Peer(對等機):一個虛擬的通信點。一個用戶可以有多個Peer,一臺計算機或設備上同樣可以有多個Peer。

    Peer Group(對等組):一種組織Peer并且發布組內的特定服務的方式。可被創建、加入、退出;在一個組里可以更新一個組成員的關系。

    ?????? Pipe(管道):Peer之間的虛擬通道,可以透過防火墻的障礙進行通信。從而使得Peer在大多數網絡情況下都可以通信。

    ?????? Advertisement(廣告):一個XML文檔,用來描述JXTA的消息、Peer、對等組或者服務等。它必須遵守編碼、標簽和內容的標準,用來交換JXTA網絡上可以獲得的任何信息。大多數JXTA的廣告編碼是使用UTF-8。

    ?????? Message(消息):有兩種方式來處理消息:①使用XML格式;②使用二進制格式。

    ?????? Rendezvous Peer(集合點):一個能夠處理來自其他Peer請求的Peer。也可以將請求委托給其他集合點。

    ?????? Router Peer(路由Peer):一個支持Peer端點協議的Peer。

    ?????? Gateway Peer(網關Peer):一個作為通信中繼的Peer。與Rendezvous Peer不同的是,它是用來在Peer間傳遞消息,而Rendezvous Peer是用來傳遞請求的。

    ?????? 好了說了這么多的東西,連我都有點暈了。J 呵呵……下面開始做一個例子來熟悉一下吧:

    4.下載并安裝JXTA

    ?????? 軟件地址:http://www.jxta.org,請下載最新穩定版本。我下載的是2003-12-15更新的穩定版。它提供了幾種平臺,根據你的操作系統選擇你需要的JXTA。當然你也可以把它的源代碼都可以下載下來,幫助你了解JXTA是如何工作的,不過要想編譯這些代碼,你還得使用Apache Ant工具,可以在http://www.apache.org下載。還有一個要注意的是你還得安裝JDK1.3.1或更高的版本,推薦JDK1.4版本。

    ?????? 下面講一下配置:

    ?????? 第一次運行JXTA程序時,JXTA將自動顯示配置工具。在Basic settings頁面里,填上一個你認為很酷的名字,表示你的Peer Name。點擊OK。下一個界面輸入安全用戶名(Secure Username)和密碼(Password),然后在Experienced Users Only頁面里填上你的IP地址和端口,TCP默認端口為9701,HTTP默認端口為9700,并點擊“+”按鈕。復選框的意思也就一目了然了。當然你也可以點擊Download relay and rendezvous lists按鈕來下載一些可供使用的TCP和HTTP rendezvous列表,以及網關列表。

    ?????? 如果你有防火墻一定要選擇Use a relay(Required if behind firewall/NAT) 復選框。

    ?????? 恭喜,你現在就可以感受和體驗JXTA程序了。J

    5.Hello JXTA的簡單程序

    程序源代碼:

    //HelloJXTA.java

    import java.io.InputStream;

    import net.jxta.peergroup.PeerGroup;

    import net.jxta.peergroup.PeerGroupFactory;

    import net.jxta.exception.PeerGroupException;

    ?

    public class HelloJXTA {

    ? public static void main(String args[]) {

    ??? System.out.println("Starting JXTA....");

    ??? HelloJXTA myapp = new HelloJXTA();

    ??? myapp.startJXTA();

    ??? System.exit(0);

    ? }

    ?

    ? public void startJXTA(){

    ??? PeerGroup pg = null;

    ??? try {

    ????? pg = PeerGroupFactory.newNetPeerGroup();

    ??? }catch (PeerGroupException e) {

    ?????? System.out.println("Fatal error:group creation failure");

    ?????? e.printStackTrace();

    ?????? System.exit(1);

    ??? }

    ??? System.out.println("Hello JXTA!:)");

    ??? System.out.println("Group name = "+pg.getPeerGroupName());

    ??? System.out.println("Group ID = "+pg.getPeerGroupID().toString());

    ??? System.out.println("Peer name = "+pg.getPeerName());

    ??? System.out.println("Peer ID = "+pg.getPeerID().toString());

    ??? System.out.println("Peer BaseClass = "+pg.refTcpProtoSpecID.getBaseClass());

    ? }

    }

    ?

    但要注意的是,此程序在編譯時,要用到jxta.jar文件,因此我們這樣來編譯程序:

    D:>javac –classpath .\lib\jxta.jar HelloJXTA.java

    這還不算復雜了,運行時候就有點復雜了:

    D:>java –classpath .\lib\jxta.jar; .\lib\log4j.jar; .\lib\jxtasecurity.jar; .\lib\cryptix-asn1.jar; .\lib\cryptix32.jar; .\lib\bcprov-jdk14.jar;.\lib\jxtaptls.jar;. HelloJXTA

    第一次運行程序的時候,會自動出現JXTA平臺的配置界面(以后只會出現登錄界面,如圖1-2所示,注意:登錄的是Secure Username,而不是Peer Name),和上面的配置一樣。同時,你還可以發現當前的目錄下多了個.jxta的目錄:

    l???????? PlatformConfig文件:由JXTA的配置工具生成,是一個符合XML規范的文本文件。如果你刪除它,下次運行HelloJXTA文件時候會出現JXTA平臺配置界面。

    l???????? Cm目錄:本地的緩沖目錄,記錄了發現的所有的PeerGroup的信息。在本例中,應該發現jxta-NetGroup和jxta-WorldGroup兩個目錄。

    l???????? Pse目錄:存放Peer用于安全認證的證書信息。

    運行結果,如圖 1-3 所示:



    圖1-3 HelloJXTA運行結果

    當然你可以把上面的命令寫成.bat文件也是可以的,但也可以把上面的包都加入到classpath的環境變量中去。如果你還是覺得有點麻煩的話,那就選擇一個編譯器。比如JCreator Pro 2.0(我只有2.0沒用2.5 J)。Configure —> Options —> JDK Profiles —> Edit,在Classes頁面里Add Package。將lib目錄下的*.jar都添加到Classes里面中去。也將jre\lib\目錄下*.jar添加進去。編譯、運行,都是OK的!呵呵……入門就說到這里,下一篇將關于JXTA的一些應用程序。



    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 100000免费啪啪18免进| 国产精品va无码免费麻豆| 久久久www成人免费毛片| 亚洲JIZZJIZZ中国少妇中文| 国产av无码专区亚洲av果冻传媒| 亚洲在成人网在线看| 国产免费牲交视频免费播放| 在线观看免费人成视频色| 亚洲精品卡2卡3卡4卡5卡区| 久久久久亚洲精品无码网址色欲 | 黄色网站软件app在线观看免费| 免费看成人AA片无码视频羞羞网| 久久久久久久亚洲精品| 亚洲av永久无码| 亚洲AV无码乱码在线观看牲色 | 一级免费黄色毛片| 妞干网免费观看视频| 亚洲国产精品乱码一区二区 | 99久久99久久精品免费观看| 亚洲AV中文无码乱人伦| 久久www免费人成看国产片| 久久亚洲私人国产精品vA| A国产一区二区免费入口| 亚洲国产高清人在线| 国产精品福利在线观看免费不卡 | 亚洲日韩人妻第一页| 色偷偷亚洲第一综合| 在线视频免费观看www动漫| 国产精品亚洲二区在线| 永久免费视频v片www| 亚洲性无码AV中文字幕| 99久久免费精品国产72精品九九| 蜜桃传媒一区二区亚洲AV| 亚洲热线99精品视频| 三年片在线观看免费| 2017亚洲男人天堂一| 午夜老司机免费视频| 黄色网站软件app在线观看免费| 色在线亚洲视频www| 亚洲熟妇无码乱子AV电影| 国产又黄又爽又猛免费app|