王 焱 (鄖陽(yáng)師范高等專(zhuān)科學(xué)校教育系,湖北 十堰442000)
吳青林 (鄖陽(yáng)師范高等專(zhuān)科學(xué)校計(jì)算機(jī)科學(xué)系,湖北十堰442000)
傳統(tǒng)的遠(yuǎn)程教學(xué)系統(tǒng)大多采用集中式的C/S (Client/Server,客戶(hù)機(jī)/服務(wù)器)模式和B/S(Brower/Server,瀏覽器/服務(wù)器)模式,將資源集中存放在中央服務(wù)器上,大量的客戶(hù)端設(shè)備未能充分利用,造成了資源的浪費(fèi)和網(wǎng)絡(luò)帶寬使用不平衡[1]。利用P2P(Peer to Peer,對(duì)等網(wǎng)絡(luò))網(wǎng)絡(luò)的優(yōu)點(diǎn)將遠(yuǎn)程教學(xué)資源分散在各個(gè)計(jì)算機(jī)節(jié)點(diǎn)上,減小服務(wù)器和網(wǎng)絡(luò)帶寬的負(fù)擔(dān),必將能夠有效的克服C/S模式和B/S模式的缺陷,進(jìn)一步提高P2P的優(yōu)勢(shì),具有更好的健壯性和可擴(kuò)展性。下面,筆者主要基于JXTA協(xié)議設(shè)計(jì)并實(shí)現(xiàn)了P2P遠(yuǎn)程教學(xué)系統(tǒng),為教師和學(xué)生提供了實(shí)時(shí)交流的手段。
JXTA是Sun公司為了解決P2P網(wǎng)絡(luò)互不相連的弊端而推出的,其目的就是為了搭建一個(gè)與系統(tǒng)無(wú)關(guān)、與語(yǔ)言無(wú)關(guān)、可以應(yīng)用在任何設(shè)備的P2P開(kāi)發(fā)平臺(tái)[2]。JXTA應(yīng)用程序分為三層結(jié)構(gòu),分別為JXTA核心層、服務(wù)層、應(yīng)用層。核心層包含了服務(wù)所需要的核心功能,為應(yīng)用程序提供了最本質(zhì)的支持;服務(wù)層提供了訪(fǎng)問(wèn)JXTA協(xié)議的接口,為應(yīng)用程序開(kāi)發(fā)提供網(wǎng)絡(luò)服務(wù);應(yīng)用層使用服務(wù)來(lái)訪(fǎng)問(wèn)JXTA網(wǎng)絡(luò)和JXTA提供的功能。三層結(jié)構(gòu)是具有層次性的,核心層處于最底層,服務(wù)層處于中間層,應(yīng)用層于最上層,其設(shè)計(jì)思想與操作系統(tǒng)的設(shè)計(jì)類(lèi)似。
遠(yuǎn)程教學(xué)系統(tǒng)的設(shè)計(jì)目標(biāo)是在Internet環(huán)境下能夠模擬真實(shí)的教學(xué)課堂,實(shí)現(xiàn)教師的課堂講解、視頻點(diǎn)播、實(shí)時(shí)交流等各種教學(xué)功能,而且每個(gè)節(jié)點(diǎn)可以通過(guò)點(diǎn)到點(diǎn)的方式實(shí)現(xiàn)各種信息資源共享,這樣可以充分的利用每個(gè)節(jié)點(diǎn)的教學(xué)資源,提高各種資源的利用率。
該系統(tǒng)的網(wǎng)絡(luò)模型采用一種基于節(jié)點(diǎn)物理位置的雙環(huán)結(jié)構(gòu),先判斷節(jié)點(diǎn)的物理位置,根據(jù)物理位置的不同形成多個(gè)次環(huán),然后從每個(gè)次環(huán)中選出一個(gè)群首節(jié)點(diǎn)構(gòu)成主環(huán),群首節(jié)點(diǎn)負(fù)責(zé)所在次環(huán)的工作情況,保存著所在次環(huán)節(jié)點(diǎn)的一些相關(guān)信息。群首節(jié)點(diǎn)是一個(gè)群組內(nèi)的高性能節(jié)點(diǎn),子環(huán)之間的通信是通過(guò)群首節(jié)點(diǎn)實(shí)現(xiàn)的,其主環(huán)和次環(huán)節(jié)點(diǎn)的順序由Hash算法分配。這種雙環(huán)拓?fù)浣Y(jié)構(gòu)具有良好的可擴(kuò)展性,管理方便,并且可以增加P2P網(wǎng)絡(luò)的穩(wěn)定性和容錯(cuò)性。
根據(jù)雙環(huán)結(jié)構(gòu)模型,將遠(yuǎn)程教學(xué)系統(tǒng)的計(jì)算機(jī)分成多個(gè)組,每個(gè)組中選出一個(gè)高性能的群首節(jié)點(diǎn)來(lái)維護(hù)本組的在線(xiàn)節(jié)點(diǎn)列表,普通的節(jié)點(diǎn)要連接到群首節(jié)點(diǎn)上才能實(shí)現(xiàn)節(jié)點(diǎn)的注冊(cè)。在子環(huán)內(nèi)的一個(gè)普通節(jié)點(diǎn)需要其他環(huán)內(nèi)節(jié)點(diǎn)的學(xué)習(xí)資源時(shí),先將請(qǐng)求轉(zhuǎn)發(fā)給所在環(huán)的群首節(jié)點(diǎn),由群首節(jié)點(diǎn)負(fù)責(zé)查詢(xún),最后將結(jié)果返回到發(fā)起查詢(xún)的普通節(jié)點(diǎn)。遠(yuǎn)程教學(xué)系統(tǒng)的雙環(huán)網(wǎng)絡(luò)模型如圖1所示。
圖1 遠(yuǎn)程教學(xué)系統(tǒng)雙環(huán)網(wǎng)絡(luò)模型
根據(jù)遠(yuǎn)程教學(xué)系統(tǒng)的功能,系統(tǒng)主要分為電子白板模塊、教學(xué)資源下載模塊、在線(xiàn)作業(yè)模塊和課堂實(shí)時(shí)交流模塊。電子白板模塊主要實(shí)現(xiàn)師生在同一塊區(qū)域中相互交流;教學(xué)資源下載模塊主要實(shí)現(xiàn)教學(xué)資源的下載,每一個(gè)節(jié)點(diǎn)均可以提供資源下載;在線(xiàn)作業(yè)模塊實(shí)現(xiàn)學(xué)生在線(xiàn)完成教師提供的作業(yè),并能夠?qū)ψ鳂I(yè)結(jié)果進(jìn)行評(píng)分;課堂實(shí)時(shí)交流模塊實(shí)現(xiàn)了音頻、視頻和文本等各種方式的交流。
對(duì)等網(wǎng)絡(luò)下的即時(shí)通信采用點(diǎn)對(duì)點(diǎn)工作模式,信息交換不經(jīng)過(guò)服務(wù)器而在客戶(hù)端之間直接進(jìn)行[3]。即時(shí)通信功能分為2人之間的通信和多人之間的通信。2人通信采用單播安全型管道,安全管道兩端的對(duì)等體都經(jīng)過(guò)了身份驗(yàn)證,并且在安全管道傳輸?shù)臄?shù)據(jù)是加密的,數(shù)據(jù)在傳輸時(shí)既不能被讀取也不能被修改。多人通信采用廣播型管道,通過(guò)廣播型管道傳送的消息能夠被多個(gè)節(jié)點(diǎn)收到,這種方式能夠使用IP網(wǎng)絡(luò)的廣播或者多播套接字的方法來(lái)實(shí)現(xiàn)。2人之間的通信和多人之間的通信在網(wǎng)絡(luò)即時(shí)通信過(guò)程中運(yùn)用的都非常廣泛。
利用JXTA協(xié)議,即時(shí)通信功能的具體實(shí)現(xiàn)如下:首先建立輸入管道,注冊(cè)管道消息監(jiān)聽(tīng),發(fā)布輸入管道通告。接著通過(guò)輸入管道執(zhí)行監(jiān)聽(tīng),處理監(jiān)聽(tīng)到的消息,監(jiān)聽(tīng)到消息后,就與監(jiān)聽(tīng)到的管道建立連接。然后建立輸出管道,將需要發(fā)送的消息在輸出管道上發(fā)送出去,最后讀取消息,并將其顯示出來(lái)。
1)根據(jù)通告機(jī)制建立管道通告,設(shè)置管道通告的標(biāo)志號(hào)、通告的名稱(chēng)和通告的類(lèi)型,并發(fā)布管道通告。部分代碼如下:
2)通過(guò)startlisten()方法進(jìn)行監(jiān)聽(tīng),等待響應(yīng)消息。然后根據(jù)響應(yīng)消息獲取輸入管道通告pipeAdvertisement,并根據(jù)pipeAdvertisement建立輸出管道OutputPipe,這樣消息接受方和消息發(fā)送方就實(shí)現(xiàn)了連接,就可以在輸出管道中傳送消息了。
3)當(dāng)管道連接完成之后,系統(tǒng)利用建立的輸出管道實(shí)現(xiàn)消息的發(fā)送,接收方利用輸入管道的監(jiān)聽(tīng)器獲取發(fā)送的消息并將其顯示。接收消息并顯示的過(guò)程為:首先定義消息事件,監(jiān)聽(tīng)是否有消息,如果有消息,則定義消息對(duì)象,接收消息,并從消息包中獲取信息頭信息和信息體信息,然后將其顯示出來(lái)。
電子白板指的是一個(gè)虛擬公用區(qū)域,參加協(xié)作的各個(gè)成員的計(jì)算機(jī)上都有一個(gè)白板的視圖[4]。用戶(hù)可以同時(shí)登錄到這個(gè)協(xié)同工作環(huán)境中,遵守一定的協(xié)調(diào)機(jī)制,實(shí)現(xiàn)實(shí)時(shí)的交流,達(dá)到共同協(xié)同完成教學(xué)任務(wù)。電子白板的通信過(guò)程是首先在一個(gè)節(jié)點(diǎn)上對(duì)一個(gè)圖形完成繪制并對(duì)圖形的一些特征進(jìn)行提取,接著將其打包傳輸?shù)叫枰邮障⒌墓?jié)點(diǎn),最后接收節(jié)點(diǎn)將其恢復(fù)成原圖形。根據(jù)以上過(guò)程可以將電子白板功能分為以下3步實(shí)現(xiàn):
1)本地圖形繪制 本地圖形繪制主要完成類(lèi)似Windows繪圖板的功能,首先定義了一個(gè)圖形的抽象類(lèi)ShapeObject,后面其他的各種圖形都通過(guò)繼承這個(gè)抽象類(lèi)來(lái)實(shí)現(xiàn)每個(gè)圖形的功能。在抽象類(lèi)中定義的圖形顏色、坐標(biāo)點(diǎn)等各種變量,還定義了繪制圖形和填充顏色等方法。
2)圖形信息打包傳輸 圖形信息打包傳輸主要完成的功能是將圖形信息進(jìn)行打包,傳送到其他的節(jié)點(diǎn)上,等待其他節(jié)點(diǎn)對(duì)圖形進(jìn)行操作。首先判斷畫(huà)圖的模式drawMode,如果模式是畫(huà)圖模式DRAWSHAPE或者是填充圖形模式FILLEDSHAPE,就要先把選擇的圖形用clearSection()函數(shù)清除,然后根據(jù)開(kāi)始點(diǎn)和結(jié)束點(diǎn)繪制圖形,在繪圖信息的HASH表中設(shè)置圖形的相關(guān)信息,最后調(diào)用輸出管道outputPipe將創(chuàng)建圖形消息包發(fā)送到點(diǎn)組中。
3)遠(yuǎn)程圖形恢復(fù) 遠(yuǎn)程圖形恢復(fù)主要實(shí)現(xiàn)在接受端根據(jù)圖形的特征信息將圖形重新繪制出來(lái)。其處理的方法是當(dāng)接收端收到消息之后,使用push函數(shù)將其存入向量Vector中,然后創(chuàng)建另外一個(gè)進(jìn)程,使用pop函數(shù)將消息從向量Vector中取出,最后調(diào)用process(Message msg)函數(shù)處理。
基于JXTA的遠(yuǎn)程教學(xué)系統(tǒng)可擴(kuò)展性好,健壯性強(qiáng),具有很高的資源利用效率。目前該遠(yuǎn)程教學(xué)系統(tǒng)已經(jīng)在一些課堂教學(xué)中使用,效果良好。隨著應(yīng)用范圍的擴(kuò)大,下一步需要在軟件界面、系統(tǒng)安全性、附加功能等方面進(jìn)一步研究和完善。
[1]胡順?lè)?,向云?qiáng).基于JXTA的平面幾何輔助教學(xué)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].云南民族大學(xué)學(xué)報(bào) (自然科學(xué)版),2011,20(2):140-143.
[2]李富蕓,蔣文娟.基于JXTA的P2P流媒體系統(tǒng)實(shí)現(xiàn)研究[J].電腦知識(shí)與技術(shù),2010,29(6):8303-8304.
[3]李永明.基于P2P的即時(shí)通信系統(tǒng)的研究[J].計(jì)算機(jī)與現(xiàn)代化,2009(8):34-39.
[4]李靜,鄭采星,劉曉平.基于CSCW的研究性學(xué)習(xí)互動(dòng)平臺(tái)中電子白板的研究與設(shè)計(jì)[J].中國(guó)教育信息,2009(7):77-79.