基于分布式的電子白板系統(tǒng)的實(shí)現(xiàn)_第1頁(yè)
基于分布式的電子白板系統(tǒng)的實(shí)現(xiàn)_第2頁(yè)
基于分布式的電子白板系統(tǒng)的實(shí)現(xiàn)_第3頁(yè)
基于分布式的電子白板系統(tǒng)的實(shí)現(xiàn)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于分布式的電子白板系統(tǒng)的實(shí)現(xiàn)

電子白板作為一種虛擬教室的工具模塊,是計(jì)算機(jī)支持的協(xié)同工作系統(tǒng)中的一個(gè)重要同步交流工具。例如,特定的通信手段用于在電子環(huán)境中創(chuàng)建公共區(qū)域,使不同地點(diǎn)的員工能夠在“通用”屏幕上討論問(wèn)題。任何活動(dòng)(圖紙、對(duì)話、標(biāo)記等)都可以實(shí)時(shí)傳輸?shù)剿杏脩舻挠^點(diǎn)上。它的主要應(yīng)用范圍是在分布式環(huán)境下,因此要求電子白板設(shè)計(jì)要滿足操作響應(yīng)在協(xié)作允許范圍內(nèi)使用戶與用戶之間的協(xié)作流暢自然。本文將著重討論電子白板系統(tǒng)的實(shí)現(xiàn)及其關(guān)鍵技術(shù)。1電子白板的功能特性電子白板是一個(gè)虛擬公用區(qū)域。教師和學(xué)生可利用電子白板進(jìn)行課堂教學(xué)、專(zhuān)題討論等教學(xué)活動(dòng)。電子白板作為典型的CSCW系統(tǒng),其主要功能涉及以下方面:1)基本的書(shū)寫(xiě)與繪畫(huà)功能,用于參與者之間的交流。2)操作提示和操作反饋功能。3)白板內(nèi)容的恢復(fù)和更新功能。4)用戶權(quán)限的辨別功能。電子白板系統(tǒng)具有以下的特性:1)通信的實(shí)時(shí)性。電子白板的服務(wù)器端與客戶端通信是實(shí)時(shí)的。其主要有兩種方式實(shí)現(xiàn):一種服務(wù)器可以主動(dòng)發(fā)送的雙向交互法;另一種是客戶機(jī)的單向輪詢法。兩種方式各有千秋,且各自已形成了成熟的技術(shù)。雙向交互比較靈活,但是,輪詢法在服務(wù)器繁忙的情況下的效率很高。所以虛擬教室的電子白板采用輪詢法實(shí)現(xiàn)。2)權(quán)限的差異性。參與者應(yīng)根據(jù)身份賦予權(quán)力。一般虛擬教室中的身份有兩種:教師和學(xué)生。教師的權(quán)力最大,不僅在通常情況下?lián)碛邪l(fā)言權(quán),而且有控制學(xué)生發(fā)言的權(quán)力。3)數(shù)據(jù)的安全性。電子白板作為一個(gè)臨界區(qū),在激烈的討論中,會(huì)出現(xiàn)幾個(gè)參與者同時(shí)對(duì)其進(jìn)競(jìng)爭(zhēng)操作的情況。系統(tǒng)提供互斥的保護(hù)和管理機(jī)制,在缺省的情況下,由系統(tǒng)根據(jù)先來(lái)先服務(wù)、輪轉(zhuǎn)或最少發(fā)言者優(yōu)先的原則賦予發(fā)言權(quán),保證了數(shù)據(jù)信息的安全傳輸。2c/s模式介紹現(xiàn)有電子白板系統(tǒng)采用的體系結(jié)構(gòu)可分為兩種模式:一是傳統(tǒng)的基于C/S的模式;另外一種是基于B/S的模式,這種模式下客戶端是標(biāo)準(zhǔn)的瀏覽器,服務(wù)器端為標(biāo)準(zhǔn)的Web服務(wù)器。文中所實(shí)現(xiàn)的電子白板系統(tǒng)結(jié)合了以上兩種系統(tǒng)的優(yōu)點(diǎn),系統(tǒng)既接受B/S模式的優(yōu)點(diǎn),即電子白板服務(wù)器端和客戶端兩部分組成,使客戶端程序僅用瀏覽器即運(yùn)行,服務(wù)器端監(jiān)聽(tīng)客戶對(duì)某個(gè)特定端口的網(wǎng)絡(luò)連接請(qǐng)求,并之建立連接,這樣,這個(gè)客戶的數(shù)據(jù)就可以發(fā)送到服務(wù)器,再服務(wù)器轉(zhuǎn)發(fā)給其他客戶??蛻舳说娜蝿?wù)是將用戶的輸入數(shù)據(jù)送給服務(wù)器,同時(shí)接收服務(wù)器轉(zhuǎn)發(fā)的別的用戶的輸入數(shù)據(jù)。每客戶端只與服務(wù)器進(jìn)行通信,并不直接與其他客戶建立連接,同時(shí)也利用C/S模式的優(yōu)點(diǎn),采用JAVA的Applet和Application分別對(duì)客戶端和服務(wù)器端編程,從而提高白板的交互能力。白板服務(wù)器負(fù)責(zé)創(chuàng)建和管理連接客戶的線程,同時(shí)不斷偵聽(tīng)、接收來(lái)自各個(gè)客戶端用戶的信息,包括繪制圖形和聊天文字信息,并將其轉(zhuǎn)發(fā)給其他用戶;白板客戶端負(fù)責(zé)創(chuàng)建客戶端用界面,并處理客戶端消息以及客戶端和服務(wù)器之間的通信。3電子白板的關(guān)鍵和實(shí)現(xiàn)3.1電子白板的設(shè)計(jì)電子白板由服務(wù)器和客戶端兩部分組成,應(yīng)用服務(wù)器與客戶機(jī)的通信采用Socket技術(shù)。用戶通過(guò)Web瀏覽器進(jìn)入,將操作消息發(fā)送到應(yīng)用服務(wù)器。因?yàn)楸景装逑到y(tǒng)中存在大量動(dòng)態(tài)設(shè)計(jì)文字、圖形及圖片,所以客戶端的圖形用戶界面選擇JavaApplet來(lái)實(shí)現(xiàn)。java引進(jìn)了Socket的概念,提供了.Socket和.ServerSocket類(lèi)庫(kù),這兩個(gè)類(lèi)一起提供完整的TCP/IP連接的支持。前者用于客戶端,后者用于服務(wù)器。一種服務(wù)通過(guò)監(jiān)聽(tīng)一個(gè)端口號(hào),可以與向該端口號(hào)發(fā)出請(qǐng)求的客戶程序進(jìn)行通信。本系統(tǒng)中的電子白板的通訊利用套接字實(shí)現(xiàn)網(wǎng)絡(luò)上客戶端和服務(wù)器端之間的連接。啟動(dòng)服務(wù)器后,開(kāi)辟一個(gè)未用端口,用于等待客戶端連接請(qǐng)求,服務(wù)器將在此端口上偵聽(tīng)以等待客戶的連接請(qǐng)求,讓服務(wù)器永遠(yuǎn)等待,直到客戶端連接到該端口,一旦有客戶送來(lái)正確的請(qǐng)求,連接到該端口,隨即確認(rèn)連接就返回一個(gè)Socket對(duì)象,表示已經(jīng)建立好連接,客戶被分配一個(gè)本地端口號(hào)并且與一個(gè)Socket連接??蛻敉ㄟ^(guò)寫(xiě)Socket來(lái)通知服務(wù)器,通過(guò)讀Socket來(lái)獲取信息。服務(wù)器也需要給它的本地端口連接一個(gè)Socket,通過(guò)讀寫(xiě)Socket來(lái)與客戶端通信。用Socket對(duì)象獲得一個(gè)輸入/輸出流在服務(wù)器和客戶這兩個(gè)端點(diǎn)進(jìn)行信息傳遞。在電子白板的設(shè)計(jì)中,Client端的Applet相關(guān)代碼如下:上面的代碼中,第二行聲明一個(gè)Socket變量s,在初始化方法中,得到在html文檔中預(yù)先設(shè)置好的端口號(hào)為20000,由getcodeBase()得到主機(jī)的IP地址。在openSocket()方法中,創(chuàng)建一Socket對(duì)象,該Socket的端口號(hào)為服務(wù)器端ServerSocket所監(jiān)聽(tīng)的端口號(hào),主機(jī)為該Applet的宿主機(jī)。由于JavaApplet安全性,Applet只允許向其宿主機(jī)打開(kāi)Socket連接。若想與任何主機(jī)建立Socket連接,則需要對(duì)Applet進(jìn)行數(shù)據(jù)簽名。創(chuàng)建好Socket連接后,便可進(jìn)行通信。Server端的Application相關(guān)代碼如下:在服務(wù)器端程序中,當(dāng)生成新的ServerSocket對(duì)象時(shí),它還不能偵聽(tīng)到達(dá)端口的客戶機(jī)請(qǐng)求,這要在調(diào)用ServerSocket對(duì)象的accept()方法后才開(kāi)始,accept()方法要等客戶機(jī)連接服務(wù)器后才返回,ServerSocket并不用于實(shí)際通信,它只為服務(wù)器端程序生成一個(gè)新的Socket實(shí)例,與相連的客戶機(jī)交談,這個(gè)Socket實(shí)例在accept()方法接受一個(gè)連接時(shí)生成的。值得注意的是在run()函數(shù)中使用了一個(gè)while(true)語(yǔ)句,用它來(lái)實(shí)現(xiàn)輪詢,這是因?yàn)镾erverSocketss在接收到客戶請(qǐng)求并激活相應(yīng)的User線程后,還要監(jiān)聽(tīng)下一個(gè)客戶的請(qǐng)求,重新調(diào)用accept()方法,進(jìn)入封鎖狀態(tài)。3.2傳輸邊界不穩(wěn)定電子白板實(shí)現(xiàn)中應(yīng)用了多線程,多線程是實(shí)現(xiàn)并發(fā)機(jī)制的一種有效手段。在服務(wù)器端的Servlet服務(wù)程序?qū)⒏鶕?jù)多個(gè)用戶請(qǐng)求建立多個(gè)用戶服務(wù)線程。當(dāng)線程完成任務(wù)時(shí)將被Java的垃圾處理器收集并銷(xiāo)毀,線程所占資源被完全釋放,而不會(huì)導(dǎo)致在白板服務(wù)器運(yùn)行的過(guò)程中逐漸消耗掉系統(tǒng)資源。這樣就保證了白板服務(wù)器可以長(zhǎng)期可靠運(yùn)行。當(dāng)用戶在白板上連續(xù)繪畫(huà)時(shí)可能產(chǎn)生大量的圖形數(shù)據(jù),尤其是繪制自由曲線,客戶端Applet若在白板的AWT事件處理程序中完成將這些數(shù)據(jù)傳輸給服務(wù)器的任務(wù),則很有可能由于網(wǎng)絡(luò)I/O的瓶頸作用,使得AWT事件處理線程受阻,從而影響白板Applet、瀏覽器等正在運(yùn)行的應(yīng)用軟件。解決的辦法就是使Applet再建立一個(gè)后臺(tái)繪圖數(shù)據(jù)傳輸線程,白板的AWT事件處理程序?qū)⒂脩舻睦L圖數(shù)據(jù)通過(guò)管道流Stream)傳輸給這個(gè)線程后就返回,把網(wǎng)絡(luò)傳輸?shù)娜蝿?wù)留給這個(gè)線程進(jìn)行。3.3客戶轉(zhuǎn)發(fā)和中心同步控制在協(xié)同學(xué)習(xí)的虛擬教室環(huán)境中,多個(gè)課堂成員并行工作,他們可能同時(shí)對(duì)同一個(gè)對(duì)象提出要求或者同一時(shí)刻對(duì)同一個(gè)對(duì)象進(jìn)行操作,為了保證系統(tǒng)的一致性,我們采用集中控制的方式。所有白板數(shù)據(jù)消息都由白板服務(wù)器進(jìn)行接收處理后轉(zhuǎn)發(fā)。白板服務(wù)器數(shù)據(jù)消息緩存中的數(shù)據(jù),由白板服務(wù)器專(zhuān)門(mén)的處理數(shù)據(jù)消息線程程序處理,對(duì)緩存中的每一個(gè)消息都更新服務(wù)器中保持的白板共享信息表,然后向所有與它建立連接的客戶轉(zhuǎn)發(fā)消息,保證每一個(gè)客戶端的數(shù)據(jù)消息副本的一致性。對(duì)白板系統(tǒng)中存在并發(fā)控制問(wèn)題,我們采用兩種并發(fā)控制機(jī)制:一種為對(duì)象鎖,另一種為白板鎖。對(duì)象鎖鎖住的是一個(gè)媒體對(duì)象;而白板鎖可以鎖住整個(gè)白板。白板中的任一對(duì)象在同一時(shí)刻只能被一個(gè)課堂成員所使用。當(dāng)一個(gè)課堂成員想要對(duì)白板的某一對(duì)象進(jìn)行操作時(shí),服務(wù)器首先確認(rèn)該對(duì)象是否已被鎖定。如果沒(méi)有被鎖定,則用戶對(duì)這個(gè)對(duì)象所做的操作就會(huì)被接受,否則此用戶的對(duì)此對(duì)象的任何操作都當(dāng)作無(wú)效處理。白板鎖控制機(jī)制就是對(duì)整個(gè)白板的編輯區(qū)域?qū)嵭幸粋€(gè)時(shí)刻只允許一個(gè)用戶操作,而在本系統(tǒng)中,只有老師有控制白板鎖的權(quán)利。對(duì)白板系統(tǒng)中存在的并發(fā)信息流的問(wèn)題,我們對(duì)客戶和服務(wù)器間傳送的各種消息,無(wú)論是客戶端的本地消息,還是服務(wù)器端消息,都采用了Java的對(duì)象串行化處理。對(duì)這些消息所進(jìn)行的串行化處理是保證同步協(xié)同共享的前提條件。當(dāng)串行器接收到對(duì)象后,就會(huì)分配給此對(duì)象一個(gè)編號(hào),因此得以保證事件按編號(hào)順序執(zhí)行。在服務(wù)器內(nèi)部,對(duì)多個(gè)用戶同時(shí)產(chǎn)生的輸入消息的處理方法是利用一個(gè)全局白板消息隊(duì)列,此消息隊(duì)列是Java中Vector類(lèi)的實(shí)例,該Vector類(lèi)中的各種方法保證了對(duì)Vector內(nèi)容的串

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論