0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于JXTA開發(fā)技術(shù)和Java語言實現(xiàn)對等式網(wǎng)絡(luò)模型即時通信系統(tǒng)的設(shè)計

電子設(shè)計 ? 來源:微計算機信息 ? 作者:符巍,鄭雪峰 ? 2021-05-22 16:15 ? 次閱讀

一、 引言

最近幾年,對等式網(wǎng)絡(luò)模型P2P開始受到重視,成為最近的技術(shù)熱點。P2P即Peer to Peer,稱為對等連接或?qū)Φ染W(wǎng)絡(luò),它與傳統(tǒng)的客戶端/服務(wù)器(C/S)或瀏覽器/服務(wù)器(B/S)模式相比,最大的不同是降低了對服務(wù)器的依賴,在P2P網(wǎng)絡(luò)中各Peer之間的關(guān)系是對等的,Peer同時具有Client和Server的特點。它們可以直接通信,進行文件傳輸,無需依賴集中式服務(wù)器或資源就可完成。

P2P技術(shù)將在網(wǎng)絡(luò)尤其是寬帶網(wǎng)絡(luò)方面具備強大的應(yīng)用潛力,2002 legend world大會上中科院計算機所的李國杰所長對P2P技術(shù)與網(wǎng)格技術(shù)的融和做出了非常有遠見的預(yù)測,國外P2P網(wǎng)絡(luò)流量占據(jù)了整個網(wǎng)絡(luò)流量的40%,國外P2P網(wǎng)絡(luò)注冊用戶超過3億以上這些都是有力的證據(jù),從試驗科學(xué)的角度來看,P2P技術(shù)是因為解決了互聯(lián)網(wǎng)模型中的弱鏈接模塊的信息傳遞這個障礙,使得互聯(lián)網(wǎng)的信息流動更加通暢才使他具備了這樣強大的生命力和應(yīng)用前景。

目前,P2P 技術(shù)的應(yīng)用主要是在文件共享和即時通訊方面這兩個方面。所謂即時通訊,其實指的就是諸如OICQ、ICQ等被稱為在線聊天的軟件。從某種意義上說,由于版 權(quán)的限制,即時通訊應(yīng)用將超過文件共享應(yīng)用,成為P2P的第一大應(yīng)用。我基于JXTA(JXTA將在第二節(jié)作詳細介紹)設(shè)計了一個簡單的P2P即時通信系統(tǒng),它可以實現(xiàn)互聯(lián)網(wǎng)上任意兩臺主機之間的直接連接,不僅可以隨時知曉對方在線與否,而且交流雙方的通訊完全是點對點進行,不依賴服務(wù)器的性能和網(wǎng)絡(luò)帶寬,它為開發(fā)更多的P2P應(yīng)用提供了基礎(chǔ)。由于Java為網(wǎng)絡(luò)編程提供了很好的支持和優(yōu)化,并且是跨平臺的,可移植性好,因此,我們選用Java作為開發(fā)語言。

二、 JXTA簡介

由于P2P應(yīng)用軟件的前景看好,各大軟件公司都在競相開發(fā)P2P的軟件開發(fā)產(chǎn)品,Sun的JXTA就是其中的一個。使用JXTA開發(fā)技術(shù),軟件開發(fā)人員可以開發(fā)出基于Java語言的P2P的應(yīng)用軟件。JXTA技術(shù)是一組開發(fā)式的協(xié)議,它們能夠連接網(wǎng)絡(luò)中的任何設(shè)備,從手提電話、無線PDA到臺式電腦,讓它們協(xié)同工作、共享資源。JXTA網(wǎng)絡(luò)里面的全部結(jié)點共同組成了一個虛擬網(wǎng)絡(luò),里面的任何一個結(jié)點都能直接訪問其他的結(jié)點,即使那些結(jié)點是位于防火墻的背后。

1、 使用JXTA技術(shù)來開發(fā)分布式計算軟件,可以實現(xiàn)以下功能:

(1) 能夠直接跟防火墻之后的其他結(jié)點連接;

(2) 簡易的共享文檔資料;

(3) 得到網(wǎng)絡(luò)上包含的信息的簡要目錄;

(4) 建立結(jié)點群組來提供定制的服務(wù);

可以在遠端監(jiān)視某個結(jié)點的行為。

2、 JXTA的軟件結(jié)構(gòu)分為以下三層(如圖1所示)

(1)核心層(JXTA Core):它包含了服務(wù)所需要的核心功能,這一層封裝了最根本的東西,包括Peer、對等組、Peer發(fā)現(xiàn)、Peer通信、Peer監(jiān)視和相關(guān)的安全原語。

(2)服務(wù)層(JXTA Service):它提供了訪問JXTA協(xié)議的接口,這一層包括了對于P2P網(wǎng)絡(luò)不是必需的、但很通用的功能,如查找、共享、索引、代碼緩存和內(nèi)容緩存的機制。

(3)應(yīng)用層(JXTA Application):它使用服務(wù)來訪問JXTA網(wǎng)絡(luò)和JXTA提供的功能。這一層包括了應(yīng)用JXTA服務(wù)卡發(fā)出來的完整的P2P應(yīng)用程序,例如myJXTA ,JXTA-CAD等應(yīng)用程序。

圖1 JXTA的層次結(jié)構(gòu)三、 結(jié)構(gòu)設(shè)計

1、 總體介紹

本系統(tǒng)是一個建立在基于JXTA的P2P網(wǎng)絡(luò)之上的即時通信軟件,它的功能類似于我們目前常常用到的即時通信軟件,如OICQ、ICQ和MSN等。即時通信系統(tǒng)分為發(fā)送(sender)、中繼轉(zhuǎn)發(fā)(transfer)和接收(receiver)三部分。當(dāng)transfer啟動時加入P2P網(wǎng)絡(luò),并且在P2P網(wǎng)絡(luò)中發(fā)布提供即時通信服務(wù)的通告。Sender加入P2P網(wǎng)絡(luò),通過查找P2P網(wǎng)絡(luò)通告尋找提供服務(wù)的transfer,選擇transfer形成P2P網(wǎng)絡(luò)通道。Sender在這個通道基礎(chǔ)上建立與目的端的SOCKET連接,將信息傳遞到receiver。傳遞的信息是用XML形式封裝的字節(jié)數(shù)組,數(shù)據(jù)被保存在XML文件中,由transfer解析出數(shù)據(jù)。通過通道中的各個transfer對信息進行加密及解密操作,實現(xiàn)sender和receiver之間的通信。當(dāng)用戶運行該軟件時,會出現(xiàn)登陸界面,如圖2所示,如果用戶是第一次運行該程序,并沒有任何默認的設(shè)置,JXTA會彈出JXTA GUI 配置實用程序讓你進行一些強制的和可選的設(shè)置。當(dāng)用戶輸入正確的用戶名和密碼之后,就會加入JXTA網(wǎng)絡(luò),并啟動本機的JXTA服務(wù),成為JXTA網(wǎng)絡(luò)中的一個Peer。

圖2系統(tǒng)通信過程示意圖如圖2所示,A、B、P1、P2……P5都是存在于基于JXTA的P2P網(wǎng)絡(luò)中的Peer,其中的A希望與B建立連接進行通信,而B收到A發(fā)出的Advertisement并對其進行驗證,當(dāng)驗證通過,則A與B之間建立Pipe,進行消息的傳遞。

2、 層次結(jié)構(gòu)

系統(tǒng)主要分成三個部分:

l P2P網(wǎng)絡(luò)中的中繼轉(zhuǎn)發(fā)部分(transfer)

l 系統(tǒng)的發(fā)送部分(sender)

l 系統(tǒng)的接收部分(receiver)

(1)中繼轉(zhuǎn)發(fā)部分(transfer)

Transfer主要負責(zé)提供匿名通信的服務(wù),接收sender不同類型的消息,對其信息進行解密操作并且傳遞到JXTA網(wǎng)絡(luò)中下一個Peer的transfer,如果是最終結(jié)點PEER就首先建立與receiver的連接,然后將信息解密之后,再解析XML文件得到數(shù)據(jù)傳遞到receiver。然后再接收receiver不同類型的消息,對其信息進行加密操作并且傳遞到下一個Peer的transfer ,直到傳回到sender。在sender請求建立通道時,必須根據(jù)sender 請求信息判斷這個transfer是作為中間結(jié)點處理數(shù)據(jù)還是作為最終結(jié)點處理數(shù)據(jù),兩者的處理信息方式有很大區(qū)別。如果信息傳遞過程中出現(xiàn)問題,將出錯信息傳回receiver。

(2)發(fā)送部分(sender)

sender主要負責(zé)查找JXTA網(wǎng)絡(luò)中提供匿名通信服務(wù)的transfer,通過找到的transfer建立起一條基于P2P網(wǎng)絡(luò)的通道,然后就可以在這條通道上建立每一個SOCKET通話連接,這樣通過這條通道就可以傳遞不同類型的信息(請求建立通道、數(shù)據(jù)、請求結(jié)束通話、請求關(guān)閉通道、建立通道允許、結(jié)束通話允許、關(guān)閉通道允許以及出錯信息)。在接收到receiver傳遞過來的信息時,由于經(jīng)過加密得到的是密文,必須按照建立的P2P網(wǎng)絡(luò)路徑的順序進行解密,才能得到所需要的明文數(shù)據(jù)。在傳遞信息時,把需要傳遞的信息封裝成XML的格式,這樣在需要使用這些信息的transfer上就可以解析出所需要的數(shù)據(jù),以便于進行下一步的操作。

(3)接收部分(receiver)

receiver主要負責(zé)在接收到P2P網(wǎng)絡(luò)中的transfer傳遞過來時的SOCKET連接請求時同意SOCKET連接,列出和自己建立連接的sender,通過選擇sender進行基于P2P網(wǎng)絡(luò)的信息傳遞。在接收到P2P網(wǎng)絡(luò)中的transfer傳遞過來時的SOCKET通話結(jié)束請求時關(guān)閉SOCKET連接,同時取消在列表中的sender,這樣receiver就無法與結(jié)束通話的sender再次取得聯(lián)系。在receiver關(guān)閉時,必須通知所有已經(jīng)與自己連接的sender,sender才可以關(guān)閉與這個receiver的連接。

3、 具體實現(xiàn)及代碼分析

由于篇幅所限,在本文中我只對系統(tǒng)中的中繼轉(zhuǎn)發(fā)部分進行介紹。

Transfer部分主要包括如下幾個重要的類:

(1)TRANSFER.CLASS

該類主要是繼承了SERVERSOCKET類,SERVERSOCKET類是用來寫服務(wù)器程序的類,所謂服務(wù)器程序,通常會監(jiān)聽某一個連接端口,如果有某一臺客戶端計算機發(fā)出聯(lián)機的請求,則服務(wù)器就必須做出一些反應(yīng)。TRANSFER.CLASS除了繼承了SERVERSOCKET的創(chuàng)建服務(wù)器監(jiān)聽端口,接受連接,關(guān)閉連接的功能之外,還定義了自己的功能函數(shù)——transnext(),與下一個P2P網(wǎng)絡(luò)結(jié)點PEER

建立連接。

(2)NEWMSG.CLASS和PARSEMSG.CLASS

在信息傳遞的過程中,所有的數(shù)據(jù)都是以XML文件格式封裝的,將整個XML文件格式的信息作為整個字節(jié)數(shù)組byte[]進行加密和解密,在需要的結(jié)點PEER將字節(jié)數(shù)組的內(nèi)容寫入到XML文件中,再使用XML的解析方法將需要的數(shù)據(jù)解析出來。關(guān)于XML文件部分的操作主要由NEWMSG.CLASS和PARSEMSG.CLASS完成,其中NEWMSG.CLASS主要是將收到的信息保存到XML文件中,而PARSEMSG.CLASS主要是解析出XML文件中需要的數(shù)據(jù)。

(3)JXTASHELL.CLASS

JXTASHELL.CLASS主要是使用JXTA創(chuàng)建P2P網(wǎng)絡(luò)中的點組,初始化點組,創(chuàng)建通告,發(fā)布通告。這個CLASS文件對搭建P2P網(wǎng)絡(luò)起了主要的作用。

下面是部分源代碼:

public void workdealwith(String m,String de){ //解析XML文件元素

try{

DOMParser parser=new DOMParser();

parser.parse(m+“.xml”); //取得需要解析的XML文件

Document dom=parser.getDocument(); //dom為結(jié)點樹的根結(jié)點

NodeList games=dom.getElementsByTagName(de); //取得需要解析的元素

for (int i=0;iNode anode=games.item(i);

NamedNodeMap attributes=anode.getAttributes();

contest=anode.getFirstChild().getNodeValue(); //得到元素de的值

for (int a=0;aNode theattribute=attributes.item(a); //取得元素de的屬性

type=theattribute.getNodeValue(); //得到元素de的屬性的值

}

}

}catch(Exception e){}

}

四、 結(jié)束語

本文作者的創(chuàng)新點主要在于在JXTA架構(gòu)的基礎(chǔ)上構(gòu)建一個P2P的即時通信息通。利用P2P非中心性和動態(tài)性的特征為即時通信服務(wù),在即時通信的過程中,在發(fā)送端對消息進行加密,在接收端再對加密的消息解密,消息在JXTA網(wǎng)絡(luò)中是以匿名方式的方式進行傳輸?shù)模箶?shù)據(jù)傳輸更加安全。傳遞的信息是用XML形式封裝的字節(jié)數(shù)組,數(shù)據(jù)被保存在XML文件中,由transfer解析出數(shù)據(jù)。通過通道中的各個transfer對信息進行加密及解密操作,實現(xiàn)客戶端和目的端之間的匿名通信。在系統(tǒng)的設(shè)計和實現(xiàn)過程中,對XML文件格式、JXTA技術(shù)、加密解密技術(shù)等等做了一定的了解。但是由于時間倉促,且實驗條件的限制,程序的在穩(wěn)定性方面仍然存在一定的問題,這有待于進一步開發(fā)和完善。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 互聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    54

    文章

    11037

    瀏覽量

    102442
  • 通信系統(tǒng)
    +關(guān)注

    關(guān)注

    6

    文章

    1156

    瀏覽量

    53241
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2946

    瀏覽量

    104362
收藏 人收藏

    評論

    相關(guān)推薦

    即時通訊是怎么做到的?

    的PC機,這樣雙方的即時文字消息就不通過 IM服務(wù)器中轉(zhuǎn),而是通過網(wǎng)絡(luò)進行點對點的直接通訊,這稱為對等通訊方式(Peer To Peer) 。在商用即時通
    發(fā)表于 01-21 10:41

    請教怎樣去設(shè)計一種即時通信監(jiān)控系統(tǒng)

    怎樣去設(shè)計一種即時通信監(jiān)控系統(tǒng)?如何對即時通信監(jiān)控系統(tǒng)進行測試?
    發(fā)表于 05-28 07:16

    基于JXTA CMS 的對等網(wǎng)共享安全模型的構(gòu)建Constr

    本文針對P2P 網(wǎng)絡(luò)中的安全問題,詳細討論了對等節(jié)點間信任關(guān)系的建立,特別是根據(jù)證據(jù)理論計算信任值的方法,介紹了JXTA 平臺的安全機制及利用其實現(xiàn)安全
    發(fā)表于 05-27 11:57 ?11次下載

    基于JXTA的P2P即時通信系統(tǒng)設(shè)計

    課題研究使用JXTA 搭建P2P 網(wǎng)絡(luò),完成即時通信系統(tǒng)。即時通信系統(tǒng)分為發(fā)送、中繼轉(zhuǎn)發(fā)和接收三
    發(fā)表于 06-20 09:00 ?15次下載

    JAVA語言實現(xiàn)RSA公鑰密碼算法

    JAVA語言實現(xiàn)RSA公鑰密碼算法:本文闡述了公開密鑰密碼體制RSA算法的原理及實現(xiàn)技術(shù)。并在此基礎(chǔ)上,給出了JAVA
    發(fā)表于 02-10 10:27 ?58次下載

    一種即時通信監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)

    一種即時通信監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn) 隨著科技的發(fā)展和計算機網(wǎng)絡(luò)的普及,即時通信軟件已逐漸融人人們的生活。
    發(fā)表于 11-19 09:19 ?675次閱讀
    一種<b class='flag-5'>即時通信</b>監(jiān)控<b class='flag-5'>系統(tǒng)</b>的設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    基于XMPP協(xié)議的Android即時通信系統(tǒng)設(shè)計

    即時通信通過互聯(lián)網(wǎng)給人們提供了便捷的通信手段,針對手機覆蓋區(qū)域和效果的不斷提升,提出一種在流行的Android手機操作系統(tǒng)上,實現(xiàn)客戶端與客戶端之間的
    發(fā)表于 05-03 17:13 ?66次下載
    基于XMPP協(xié)議的Android<b class='flag-5'>即時通信系統(tǒng)</b>設(shè)計

    基于Android平臺的即時通信系統(tǒng)客戶端設(shè)計

    為解決在基于Linux 操作系統(tǒng)的Android 手機平臺上即時通信問題, 實現(xiàn)系統(tǒng)客戶端進行文本、圖片、音樂的傳送和播放。采用Java
    發(fā)表于 10-11 16:47 ?4926次閱讀
    基于Android平臺的<b class='flag-5'>即時通信</b><b class='flag-5'>系統(tǒng)</b>客戶端設(shè)計

    基于P2P結(jié)構(gòu)的即時通信系統(tǒng)的設(shè)計與實現(xiàn)

    為了實現(xiàn)在局域網(wǎng)中進行通信,即時通信系統(tǒng)就是在這種思想和背景下構(gòu)思的一種基于多種基本應(yīng)用的局域網(wǎng)應(yīng)用軟件支撐平臺。即時通信
    發(fā)表于 04-22 14:10 ?33次下載
    基于P2P結(jié)構(gòu)的<b class='flag-5'>即時通信</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    Android的自主可控即時通信系統(tǒng)的設(shè)計與實現(xiàn)

    Android的自主可控即時通信系統(tǒng)的設(shè)計與實現(xiàn)
    發(fā)表于 08-31 10:26 ?3次下載
    Android的自主可控<b class='flag-5'>即時通信</b><b class='flag-5'>系統(tǒng)</b>的設(shè)計與<b class='flag-5'>實現(xiàn)</b>

    基于Android平臺的即時通信系統(tǒng)客戶端設(shè)計

    多種移動客戶端提供即時通信服務(wù)系統(tǒng)的客戶端解決方案。 1 系統(tǒng)開發(fā)環(huán)境 Android 的應(yīng)用開發(fā)使用Java
    發(fā)表于 12-01 01:16 ?623次閱讀
     基于Android平臺的<b class='flag-5'>即時通信</b><b class='flag-5'>系統(tǒng)</b>客戶端設(shè)計

    即時通信協(xié)議分析和信息監(jiān)控的模型

    和Yahoo Messenger等即時通產(chǎn)品。它們大都擁有精美的界面,完善的功能,受到廣大互聯(lián)網(wǎng)用戶的喜愛。但同時它們也帶來了很大的安全隱患,如傳播病毒、傳播不健康的色情內(nèi)容等。因此,基于網(wǎng)絡(luò)信息安全的目的,對即時通信軟件的監(jiān)控
    發(fā)表于 01-09 17:13 ?0次下載

    java實現(xiàn)IM即時通訊聊天功能代碼

    從實際工程應(yīng)用角度出發(fā),以計算機網(wǎng)絡(luò)原理為指導(dǎo),結(jié)合當(dāng)前網(wǎng)絡(luò)中的一些常用技術(shù),編程實現(xiàn)基于C/S架構(gòu)的網(wǎng)絡(luò)聊天工具是切實可行的。本文為大家介
    發(fā)表于 01-24 16:10 ?2.7w次閱讀

    go語言實現(xiàn)的簡單im即時通信系統(tǒng)

    ? 本文介紹了一個 go 語言實現(xiàn)的簡單 im 即時通信系統(tǒng)。 簡介 純go實現(xiàn)的im即時通系統(tǒng)
    的頭像 發(fā)表于 10-20 16:02 ?3571次閱讀

    go語言實現(xiàn)的簡單im即時通信系統(tǒng)解析

    【導(dǎo)讀】 本文介紹了一個 go 語言實現(xiàn)的簡單 im 即時通信系統(tǒng)。 簡介 純go實現(xiàn)的im即時通系統(tǒng)
    的頭像 發(fā)表于 10-26 09:22 ?4229次閱讀
    go<b class='flag-5'>語言實現(xiàn)</b>的簡單im<b class='flag-5'>即時通信</b><b class='flag-5'>系統(tǒng)</b>解析