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.

主站蜘蛛池模板: 国产乱子精品一区二区在线观看| 992Tv视频国产精品| 欧美日韩国产在线观看一区二区三区| 国产欧美日韩综合一区在线播放| 草逼视频国产| 啪啪永久免费av| 亚洲成a人片7777| 国产精品专区第1页| 国产精品男人的天堂| 免费中文字幕一级毛片| av在线5g无码天天| 成人免费黄色小视频| 特黄日韩免费一区二区三区| 精品国产一二三区| 操美女免费网站| 91外围女在线观看| 无码免费的亚洲视频| 暴力调教一区二区三区| 亚洲福利网址| 婷婷久久综合九色综合88| 国产欧美高清| 欧美在线精品一区二区三区| 日本www色视频| 免费黄色国产视频| 456亚洲人成高清在线| 国产日韩精品欧美一区灰| 亚洲手机在线| 国产十八禁在线观看免费| 欧美特级AAAAAA视频免费观看| 伊人精品成人久久综合| 日本欧美成人免费| 免费无码又爽又刺激高| 免费女人18毛片a级毛片视频| 亚洲精品国偷自产在线91正片| 亚洲成人精品| 一边摸一边做爽的视频17国产| 少妇精品网站| 色爽网免费视频| 精品成人免费自拍视频| 日韩欧美国产成人| 欧美日韩一区二区在线播放| 日本色综合网| 在线欧美国产| 色亚洲成人| 国产三级国产精品国产普男人| 亚洲一区二区视频在线观看| 五月天天天色| 亚洲AⅤ综合在线欧美一区| 亚洲色图欧美一区| 欧美a在线| 中文字幕乱码中文乱码51精品| 久久99国产乱子伦精品免| www亚洲天堂| 黄色网址免费在线| 久久鸭综合久久国产| 亚亚洲乱码一二三四区| 欧美日韩中文国产va另类| 中文字幕日韩欧美| 精品午夜国产福利观看| 香蕉蕉亚亚洲aav综合| 国产成人亚洲无吗淙合青草| 欧美一区国产| 18禁色诱爆乳网站| 视频二区亚洲精品| 亚洲国产日韩在线成人蜜芽| 国产精品福利尤物youwu | 国产免费羞羞视频| 亚洲欧美不卡视频| 99国产精品免费观看视频| 国产无人区一区二区三区| 精品成人一区二区三区电影 | 国产喷水视频| 欧美一级大片在线观看| 国产在线专区| 欧美日韩一区二区在线播放| 亚洲国产精品国自产拍A| 中国国语毛片免费观看视频| 99偷拍视频精品一区二区| 亚洲视频免费在线看| 欧美成人精品一级在线观看| 日本91在线| 91欧美在线|