999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JXTA的P2P即時(shí)通信軟件的Java實(shí)現(xiàn)研究

2018-04-24 05:01:00王建
無(wú)線互聯(lián)科技 2018年4期

王建

摘 要:JXTA是Sun公司專為P2P應(yīng)用程序所搭建的一個(gè)平臺(tái),該平臺(tái)可通過Java實(shí)現(xiàn)。通過JXTA平臺(tái)中的6大協(xié)議、3大層,運(yùn)用Java編程語(yǔ)言,能夠?qū)崿F(xiàn)基于多個(gè)peer節(jié)點(diǎn)的P2P即時(shí)通信。其中即時(shí)通信模塊是該軟件的核心部分,利用JXTA平臺(tái)提供的服務(wù)構(gòu)建一個(gè)輸入管道與輸出管道,設(shè)計(jì)一個(gè)JXTASocket包,將peer接口方法整合到該軟件包內(nèi),即可循環(huán)完成即時(shí)通信。文章基于JXTA平臺(tái),利用平臺(tái)的JAVA綁定,設(shè)計(jì)了一款混合型的P2P即時(shí)通信軟件,真正實(shí)現(xiàn)了P2P跨網(wǎng)絡(luò)的即時(shí)通信。

關(guān)鍵詞:JXTA;P2P;即時(shí)通信軟件;Java實(shí)現(xiàn)

P2P是Peer-to-Peer,是一種對(duì)等網(wǎng)絡(luò)工作模式,在此模式下,能夠?qū)⒎?wù)器弱化或者完全取消,所有結(jié)點(diǎn)均是服務(wù)器與客戶機(jī)的結(jié)合,是對(duì)等關(guān)系。P2P網(wǎng)絡(luò)具有良好的擴(kuò)展性,能夠更好地利用網(wǎng)絡(luò)邊緣資源,避免發(fā)生單點(diǎn)故障,是當(dāng)前互聯(lián)網(wǎng)領(lǐng)域應(yīng)用廣泛的一種模式[1]。

1 JXTA平臺(tái)

JXTA平臺(tái)是一個(gè)專為P2P網(wǎng)絡(luò)應(yīng)用的開發(fā)所設(shè)計(jì)的平臺(tái),既能夠?yàn)镻2P網(wǎng)絡(luò)的構(gòu)建提供一組協(xié)議,又能夠?yàn)镻2P應(yīng)用程序的開發(fā)提供一個(gè)平臺(tái),能夠提供基于Java語(yǔ)言的應(yīng)用程序編程接口(Application Programming Interface,API)。JXTA協(xié)議能夠支持多種對(duì)等點(diǎn)之間的直接通信,無(wú)需經(jīng)過中心服務(wù)器,即可相互發(fā)現(xiàn)并完成通信。其核心構(gòu)件包括peer(對(duì)等點(diǎn)),如PC機(jī)、傳感器或移動(dòng)通信設(shè)備等能夠?qū)崿F(xiàn)JXTA協(xié)議的實(shí)體;peer group(對(duì)等組),目的相同的對(duì)等點(diǎn)集合形成的一個(gè)跨越不同物理網(wǎng)絡(luò)的組;Service(服務(wù)),對(duì)等點(diǎn)與對(duì)等組均能夠提供服務(wù),對(duì)等點(diǎn)獨(dú)立提供一個(gè)peer服務(wù),對(duì)等組則由整個(gè)組提供一個(gè)peer group服務(wù);Pipe(管道),對(duì)等點(diǎn)之間的虛擬連接,是JXTA信息在各個(gè)節(jié)點(diǎn)之間發(fā)送與接收的途徑;Message(信息),JXTA平臺(tái)可以通過XML方式與二進(jìn)制方式傳遞信息;Advicement(廣告),利用XML文檔的方式交換JXTA中所有可用的信息,可以是一個(gè)對(duì)等點(diǎn)、一個(gè)對(duì)等組、一個(gè)管道或者一個(gè)服務(wù)的信息[2]。

2 基于JXTA的P2P即時(shí)通信軟件的Java實(shí)現(xiàn)

2.1 peer接口的設(shè)計(jì)

JXTA中的peer之間通過Pipe完成通信,各Pipe都是通過相同的通信連接方式與過程運(yùn)行的,因此,可以將peer節(jié)點(diǎn)的連接設(shè)計(jì)為一個(gè)JXTASocket包,用以封裝全部的peer通信。該包中包含public interface peer{、public boolean bind()(peer和輸入管道綁定,并開始執(zhí)行監(jiān)聽功能)、public void run()(發(fā)送和輸入管道綁定的信息)、public boolean connect()(綁定輸出管道,并構(gòu)建通信連接)、public boolean sendMessage()(利用輸出管道發(fā)送信息)、public void setOutListener()(設(shè)定輸出管道的監(jiān)聽器)、public void setInListener()(設(shè)定輸入管道的監(jiān)聽器)、public void createGroup()(建立對(duì)等組)、public void joinGroup()(加入對(duì)等組)、public void leaveGroup()(離開對(duì)等組)、public boolean searchGroupWithName()(搜索對(duì)等組)、public boolean searchPeerWithName()(搜索對(duì)等點(diǎn))等方法。

2.2 聊天信息即時(shí)通信的實(shí)現(xiàn)流程

(1)通過DiscoveryService構(gòu)建一個(gè)信息輸入管道:以 pipeSvc.createInputPipe()。(2)執(zhí)行監(jiān)聽,設(shè)定一個(gè)輸入管道Listener,設(shè)定public void pipeMsgEvent()的方法,消息到來(lái)時(shí),該程序就會(huì)自動(dòng)監(jiān)聽。(3)解析收到的信息,利用信息解析協(xié)議,通過String userName,String sendContent對(duì)消息進(jìn)行解析。(4)與監(jiān)聽到的管道通知進(jìn)行連接,并構(gòu)建一個(gè)信息輸出管道pipeOutService.createOutputPipe()。(5)在輸出管道中利用newChatMessage()的方法發(fā)送信息,先將信息全部封裝為new Message,再利用輸出管道將其發(fā)送出去。(6)在信息到達(dá)輸入管道時(shí),再調(diào)用pipeMsgEvent()的方法,獲取、解析、顯示即時(shí)信息,完成這一步,即完成了一次完整的即時(shí)通信。這一流程的反復(fù)運(yùn)行,即是P2P即時(shí)通信系統(tǒng)的實(shí)現(xiàn)。

2.3 文件傳輸即時(shí)通信的實(shí)現(xiàn)

(1)通過輸入管道捕獲一個(gè)文件列表共享請(qǐng)求,并將共享列表發(fā)送出去,利用public void doFileListRequest()的方法完成。(2)捕獲文件列表,并顯示可供共享的一個(gè)文件列表,利用public void doFileList()的方法完成。(3)捕獲對(duì)等體共享文件下載請(qǐng)求,分析其請(qǐng)求的文件名,并生成文件流的相應(yīng)信息,再發(fā)送給對(duì)方,利用public void doFileListDownloadRequest()的方法完成。(4)捕獲文件流的對(duì)應(yīng)信息后,解析可供下載的文件名,再存儲(chǔ),public void doFileListDownload()的接口完成。(5)捕獲上傳后的文件流信息,分析文件名,再完成存儲(chǔ),public void doFileListUpload()的接口完成。

2.4 輸入管道的構(gòu)建步驟

(1)對(duì)于對(duì)等點(diǎn)發(fā)送的信息,首先要構(gòu)建一個(gè)管道廣告,再發(fā)布該廣告PipeAdvertisement myadv,并設(shè)定該廣告的ID及管道信息myadv.setPipeID,myadv.setName,在設(shè)定廣告類型時(shí),可選擇一對(duì)多的廣播型管道,也可選擇一對(duì)一的單播型管道。(2)發(fā)布廣告,讓相互通信的對(duì)等點(diǎn)能夠發(fā)現(xiàn)該廣告,DiscoveryService可用于該類服務(wù),設(shè)定disco.publish,disco.remotePublish的接口。(3)通過PipeService構(gòu)建一個(gè)基于該廣告的對(duì)應(yīng)輸入管道,并指定對(duì)應(yīng)的監(jiān)聽器,即可等待消息到達(dá),并實(shí)現(xiàn)即時(shí)通信。

2.5 GUI圖形界面的創(chuàng)建

GUI圖形界面為整個(gè)IM系統(tǒng)的模型,是用戶登錄整個(gè)系統(tǒng)時(shí)的初始運(yùn)行模塊,包含了登錄模塊、即時(shí)通信模塊、文件傳輸模塊、組管理模塊和用戶查找模塊,各模塊對(duì)應(yīng)不同的peer接口,完成整個(gè)系統(tǒng)的交互通信與顯示。

2.6 GUI界面與通信軟件的鏈接

通過IDE開發(fā)工具導(dǎo)入GUI界面,修改通信軟件生成構(gòu)造器。將構(gòu)造器建在源程序中,通過public VSJ Chat()代碼導(dǎo)入GUI界面,采用個(gè)性化的方法localinit()建立初始化代碼,建立發(fā)送者的名字MySenderName=""或發(fā)送群的名字MyGroupName=""。通過Beaninit()的方法調(diào)用對(duì)等機(jī)或群名,激活特定群中連接的對(duì)等機(jī)平臺(tái),將IM系統(tǒng)加入到用戶名已知的IM會(huì)話平臺(tái)中,即可構(gòu)建信息輸入管道與輸出管道發(fā)送或接收信息。

2.7 該軟件的技術(shù)優(yōu)勢(shì)

該軟件的設(shè)定基于JXTA平臺(tái)本身提供的能夠無(wú)視系統(tǒng)、語(yǔ)言、服務(wù)器的網(wǎng)絡(luò)限制等,為多個(gè)對(duì)等點(diǎn)提供一個(gè)最為實(shí)用、簡(jiǎn)捷的即時(shí)通信功能,既能夠用于聊天,也能夠用于文件傳輸。用戶信息與索引均無(wú)需借助服務(wù)器進(jìn)行存儲(chǔ),軟件在運(yùn)行時(shí)對(duì)服務(wù)器的依賴性極低,即使服務(wù)器受到攻擊,也不會(huì)影響軟件的繼續(xù)運(yùn)行。用戶在交換信息時(shí),不需要有確定的準(zhǔn)確地址,能夠跨過防火墻及NAT設(shè)備,實(shí)現(xiàn)暢通交流。用戶通過JXTA平臺(tái)能夠真正實(shí)現(xiàn)peer-to-peer的對(duì)等通信,對(duì)于編程語(yǔ)言、開發(fā)平臺(tái)及傳輸協(xié)議無(wú)依賴性,能夠接入任意數(shù)字設(shè)備,無(wú)需在指定的PC機(jī)或其他平臺(tái)上接入。用戶的即時(shí)通信無(wú)需借助網(wǎng)絡(luò),TCP/IP,藍(lán)牙,HTTP或者家庭網(wǎng)絡(luò)等都能夠即時(shí)傳送信息,借助于JXTA提供的6大協(xié)議,在相同網(wǎng)絡(luò)中的對(duì)等點(diǎn)可以方便地進(jìn)行通信,真正實(shí)現(xiàn)了分布式的P2P通信。目前JXTA平臺(tái)自身即提供了Java語(yǔ)言綁定,在任意JXTA平臺(tái)運(yùn)行P2P程序都能夠直接按照自身喜好配置網(wǎng)絡(luò)環(huán)境,通過該平臺(tái)強(qiáng)大的網(wǎng)絡(luò)環(huán)境跨越能力,穿越各種網(wǎng)絡(luò)防火墻、網(wǎng)段、服務(wù)器代理等不同的網(wǎng)絡(luò)環(huán)境,實(shí)現(xiàn)即時(shí)通信,并利用Java綁定輕松的創(chuàng)建輸入與輸出管道,實(shí)現(xiàn)即時(shí)通信[3]。

3 實(shí)驗(yàn)結(jié)果

在JXTA平臺(tái)上運(yùn)行GUI界面,彈出配置器后,根據(jù)步驟與要求設(shè)置各項(xiàng)參數(shù),完成初始化配置,并將配置文件存儲(chǔ)于.JXTA目錄中,以用于之后使用時(shí)的用戶名與密度提醒。根據(jù)局域網(wǎng)要求設(shè)置測(cè)試參數(shù),建立集合點(diǎn)runit.bat文件,運(yùn)行該文件,即可根據(jù)代碼提供建立一個(gè)Jxta通信群,以此作為群集合點(diǎn)。根據(jù)對(duì)等機(jī)的數(shù)量,開始運(yùn)行各個(gè)對(duì)等點(diǎn),每個(gè)對(duì)等點(diǎn)均對(duì)應(yīng)一個(gè)runit.bat文件,逐個(gè)完成設(shè)置,即可運(yùn)行,再利用之前建立的管道與廣告運(yùn)行命令就可以在不同的對(duì)等點(diǎn)之間進(jìn)行即時(shí)通信。在通信過程中,需利用Recdezvous Peer將接收到的各對(duì)等機(jī)的廣告進(jìn)行緩存,以便突破內(nèi)網(wǎng)限制并發(fā)現(xiàn)所創(chuàng)建的PeerGroup。創(chuàng)建管道廣告(Pipe Advereisement),并使有固定的管道ID。利用PeerGroup與PipeAdvereisement構(gòu)建即時(shí)通信的虛擬通道。在兩臺(tái)機(jī)器中分別建立一個(gè)JxtaSocket,兩臺(tái)機(jī)器均建立代碼getInputStream()與getOutputStream(),以獲得輸入管道與輸出管道的廣告信息,并進(jìn)行讀出與寫入操作,進(jìn)而實(shí)現(xiàn)了兩臺(tái)不同機(jī)器的P2P即時(shí)通信。

4 結(jié)語(yǔ)

本文設(shè)計(jì)了一個(gè)使用Java語(yǔ)言的基于JXTA的P2P混合型即時(shí)通信軟件,通過Java語(yǔ)言、JXTA提供的六大協(xié)議與服務(wù),能夠自由地構(gòu)建輸入管道與輸出管道,從而完成對(duì)等組、對(duì)等點(diǎn)之間的廣告、消息和文件傳輸,為小型合作組的交流提供了一個(gè)更為友好的平臺(tái)。

[參考文獻(xiàn)]

[1]卿琳.基于JXTA的P2P即時(shí)通信軟件的Java實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010(14):136-139.

[2]駱開華.基于JXTA平臺(tái)的P2P應(yīng)用實(shí)例的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2009(13):3362-3363.

[3]馮君.基于JXTA的即時(shí)通信系統(tǒng)研究與實(shí)現(xiàn)[J].濱州學(xué)院學(xué)報(bào),2014(6):92-97.

主站蜘蛛池模板: 99久久国产精品无码| 色偷偷一区| 在线播放精品一区二区啪视频| 亚洲精品爱草草视频在线| 黄色网站在线观看无码| 2021精品国产自在现线看| 中文字幕人妻av一区二区| 国产呦视频免费视频在线观看| 人人91人人澡人人妻人人爽| 国产素人在线| 日韩av高清无码一区二区三区| 免费av一区二区三区在线| 91久久青青草原精品国产| 无码精品福利一区二区三区| 91人妻在线视频| 国产午夜小视频| 日韩欧美国产另类| 欧美色99| 日韩精品一区二区三区免费| 一区二区三区毛片无码| a毛片在线播放| 欧美19综合中文字幕| 97色伦色在线综合视频| 狂欢视频在线观看不卡| 最新国产成人剧情在线播放| 久久窝窝国产精品午夜看片| 好紧好深好大乳无码中文字幕| 国产00高中生在线播放| 亚洲精品爱草草视频在线| 国产网友愉拍精品| 国产视频一二三区| 国产爽歪歪免费视频在线观看| 操美女免费网站| 国产第四页| 欧美亚洲国产一区| 免费又黄又爽又猛大片午夜| 久久黄色影院| 国产高潮流白浆视频| 国产幂在线无码精品| 国产欧美日韩18| 黄色福利在线| 无遮挡国产高潮视频免费观看| 日本亚洲欧美在线| 国产一区在线视频观看| 免费在线色| 九色视频线上播放| 免费看久久精品99| 亚洲国产亚综合在线区| 日本不卡在线| 精品久久久久久久久久久| 91免费国产高清观看| 国产无遮挡猛进猛出免费软件| 亚洲国产日韩视频观看| 精品国产黑色丝袜高跟鞋| 国产白浆一区二区三区视频在线| 欧美成人怡春院在线激情| 伊人查蕉在线观看国产精品| 久青草国产高清在线视频| 国产乱子伦一区二区=| 在线无码av一区二区三区| 成人精品区| 国产国模一区二区三区四区| 日韩成人在线一区二区| 国产成人午夜福利免费无码r| 国产国语一级毛片| 很黄的网站在线观看| aaa国产一级毛片| 亚洲男人天堂2020| 亚洲三级视频在线观看| 国产美女精品一区二区| 亚洲人在线| 欧美在线伊人| 国产精品大尺度尺度视频| 精品国产免费人成在线观看| 亚洲人成成无码网WWW| 免费激情网址| 亚洲免费人成影院| 青草精品视频| 91福利免费视频| 婷婷综合亚洲| 2022国产无码在线| 亚洲综合九九|