王 焱 (鄖陽師范高等專科學校教育系,湖北 十堰442000)
吳青林 (鄖陽師范高等專科學校計算機科學系,湖北十堰442000)
傳統的遠程教學系統大多采用集中式的C/S (Client/Server,客戶機/服務器)模式和B/S(Brower/Server,瀏覽器/服務器)模式,將資源集中存放在中央服務器上,大量的客戶端設備未能充分利用,造成了資源的浪費和網絡帶寬使用不平衡[1]。利用P2P(Peer to Peer,對等網絡)網絡的優點將遠程教學資源分散在各個計算機節點上,減小服務器和網絡帶寬的負擔,必將能夠有效的克服C/S模式和B/S模式的缺陷,進一步提高P2P的優勢,具有更好的健壯性和可擴展性。下面,筆者主要基于JXTA協議設計并實現了P2P遠程教學系統,為教師和學生提供了實時交流的手段。
JXTA是Sun公司為了解決P2P網絡互不相連的弊端而推出的,其目的就是為了搭建一個與系統無關、與語言無關、可以應用在任何設備的P2P開發平臺[2]。JXTA應用程序分為三層結構,分別為JXTA核心層、服務層、應用層。核心層包含了服務所需要的核心功能,為應用程序提供了最本質的支持;服務層提供了訪問JXTA協議的接口,為應用程序開發提供網絡服務;應用層使用服務來訪問JXTA網絡和JXTA提供的功能。三層結構是具有層次性的,核心層處于最底層,服務層處于中間層,應用層于最上層,其設計思想與操作系統的設計類似。
遠程教學系統的設計目標是在Internet環境下能夠模擬真實的教學課堂,實現教師的課堂講解、視頻點播、實時交流等各種教學功能,而且每個節點可以通過點到點的方式實現各種信息資源共享,這樣可以充分的利用每個節點的教學資源,提高各種資源的利用率。
該系統的網絡模型采用一種基于節點物理位置的雙環結構,先判斷節點的物理位置,根據物理位置的不同形成多個次環,然后從每個次環中選出一個群首節點構成主環,群首節點負責所在次環的工作情況,保存著所在次環節點的一些相關信息。群首節點是一個群組內的高性能節點,子環之間的通信是通過群首節點實現的,其主環和次環節點的順序由Hash算法分配。這種雙環拓撲結構具有良好的可擴展性,管理方便,并且可以增加P2P網絡的穩定性和容錯性。
根據雙環結構模型,將遠程教學系統的計算機分成多個組,每個組中選出一個高性能的群首節點來維護本組的在線節點列表,普通的節點要連接到群首節點上才能實現節點的注冊。在子環內的一個普通節點需要其他環內節點的學習資源時,先將請求轉發給所在環的群首節點,由群首節點負責查詢,最后將結果返回到發起查詢的普通節點。遠程教學系統的雙環網絡模型如圖1所示。

圖1 遠程教學系統雙環網絡模型
根據遠程教學系統的功能,系統主要分為電子白板模塊、教學資源下載模塊、在線作業模塊和課堂實時交流模塊。電子白板模塊主要實現師生在同一塊區域中相互交流;教學資源下載模塊主要實現教學資源的下載,每一個節點均可以提供資源下載;在線作業模塊實現學生在線完成教師提供的作業,并能夠對作業結果進行評分;課堂實時交流模塊實現了音頻、視頻和文本等各種方式的交流。
對等網絡下的即時通信采用點對點工作模式,信息交換不經過服務器而在客戶端之間直接進行[3]。即時通信功能分為2人之間的通信和多人之間的通信。2人通信采用單播安全型管道,安全管道兩端的對等體都經過了身份驗證,并且在安全管道傳輸的數據是加密的,數據在傳輸時既不能被讀取也不能被修改。多人通信采用廣播型管道,通過廣播型管道傳送的消息能夠被多個節點收到,這種方式能夠使用IP網絡的廣播或者多播套接字的方法來實現。2人之間的通信和多人之間的通信在網絡即時通信過程中運用的都非常廣泛。
利用JXTA協議,即時通信功能的具體實現如下:首先建立輸入管道,注冊管道消息監聽,發布輸入管道通告。接著通過輸入管道執行監聽,處理監聽到的消息,監聽到消息后,就與監聽到的管道建立連接。然后建立輸出管道,將需要發送的消息在輸出管道上發送出去,最后讀取消息,并將其顯示出來。
1)根據通告機制建立管道通告,設置管道通告的標志號、通告的名稱和通告的類型,并發布管道通告。部分代碼如下:

2)通過startlisten()方法進行監聽,等待響應消息。然后根據響應消息獲取輸入管道通告pipeAdvertisement,并根據pipeAdvertisement建立輸出管道OutputPipe,這樣消息接受方和消息發送方就實現了連接,就可以在輸出管道中傳送消息了。
3)當管道連接完成之后,系統利用建立的輸出管道實現消息的發送,接收方利用輸入管道的監聽器獲取發送的消息并將其顯示。接收消息并顯示的過程為:首先定義消息事件,監聽是否有消息,如果有消息,則定義消息對象,接收消息,并從消息包中獲取信息頭信息和信息體信息,然后將其顯示出來。
電子白板指的是一個虛擬公用區域,參加協作的各個成員的計算機上都有一個白板的視圖[4]。用戶可以同時登錄到這個協同工作環境中,遵守一定的協調機制,實現實時的交流,達到共同協同完成教學任務。電子白板的通信過程是首先在一個節點上對一個圖形完成繪制并對圖形的一些特征進行提取,接著將其打包傳輸到需要接收消息的節點,最后接收節點將其恢復成原圖形。根據以上過程可以將電子白板功能分為以下3步實現:
1)本地圖形繪制 本地圖形繪制主要完成類似Windows繪圖板的功能,首先定義了一個圖形的抽象類ShapeObject,后面其他的各種圖形都通過繼承這個抽象類來實現每個圖形的功能。在抽象類中定義的圖形顏色、坐標點等各種變量,還定義了繪制圖形和填充顏色等方法。
2)圖形信息打包傳輸 圖形信息打包傳輸主要完成的功能是將圖形信息進行打包,傳送到其他的節點上,等待其他節點對圖形進行操作。首先判斷畫圖的模式drawMode,如果模式是畫圖模式DRAWSHAPE或者是填充圖形模式FILLEDSHAPE,就要先把選擇的圖形用clearSection()函數清除,然后根據開始點和結束點繪制圖形,在繪圖信息的HASH表中設置圖形的相關信息,最后調用輸出管道outputPipe將創建圖形消息包發送到點組中。
3)遠程圖形恢復 遠程圖形恢復主要實現在接受端根據圖形的特征信息將圖形重新繪制出來。其處理的方法是當接收端收到消息之后,使用push函數將其存入向量Vector中,然后創建另外一個進程,使用pop函數將消息從向量Vector中取出,最后調用process(Message msg)函數處理。
基于JXTA的遠程教學系統可擴展性好,健壯性強,具有很高的資源利用效率。目前該遠程教學系統已經在一些課堂教學中使用,效果良好。隨著應用范圍的擴大,下一步需要在軟件界面、系統安全性、附加功能等方面進一步研究和完善。
[1]胡順仿,向云強.基于JXTA的平面幾何輔助教學系統設計與實現[J].云南民族大學學報 (自然科學版),2011,20(2):140-143.
[2]李富蕓,蔣文娟.基于JXTA的P2P流媒體系統實現研究[J].電腦知識與技術,2010,29(6):8303-8304.
[3]李永明.基于P2P的即時通信系統的研究[J].計算機與現代化,2009(8):34-39.
[4]李靜,鄭采星,劉曉平.基于CSCW的研究性學習互動平臺中電子白板的研究與設計[J].中國教育信息,2009(7):77-79.