麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

用JAVA編制電子白板軟件

2019-11-18 13:28:06
字體:
來源:轉載
供稿:網友

  ----隨著Internet的迅速發展,在Email、WWW、FTP等傳統的非實時應用日趨成熟的同時,廣大網絡用戶對在線實時交流的需求不斷擴大,如網上會議、遠程教學、協同工作等。這方面的應用軟件也日益豐富起來。該類軟件主要分為兩類,一種是以目前BBS和主頁上的聊天室為代表的純文字型的交流工具;另一種就是本文要介紹的電子白板類交流工具。電子白板除了具備聊天室的全部功能外,更重要的是,它還引入了繪畫圖形交流功能,使網上交流的形象性和直觀性大大加強了,彌補了文字交流的不足。當分布在Internet不同位置的用戶用白板進行交流時,一個人在自己的白板上繪制的圖形可以馬上在別人的白板上顯示出來,好象大家都在同一塊白板上繪畫,彼此間的距離感大大縮短了。
  
  ----目前具有電子白板功能的軟件有微軟的Netmeeting等。此類軟件在使用前需要用安裝盤安裝(Netmeeting是InternetEXPlorer4.0的選裝件),在設置完成后才能使用。相比而言,在主頁中用javaApplet實現白板功能就顯得優勢很大。因為它不需要傳統軟件的下載、安裝和設置的繁瑣步驟,只要用支持JAVA的瀏覽器連接到該Applet所在主頁,就可以使用白板。用于瀏覽器的普及性(大部分常用瀏覽器都支持JAVA,如InternetExploer3.0與NetscapeNavigator3.0及以上版本)使得這種電子白板的潛在客戶群是巨大的。此外,用JAVA編制電子白板軟件還有一個顯而易見的優勢,就是整個軟件(尤其是白板服務器)無須重新修改編譯就可在NT、Unix、linux等支持JAVA的平臺上運行。
  
  ----目前基于瀏覽器和JAVA的電子白板正處于起步階段,筆者尚未在網上看到該類軟件。由于工作需要,筆者自行開發了一套此類電子白板軟件。這里想將開發中的一些經驗介紹給大家,以達到共同交流的目的。
  
  工作原理
  ----電子白板有兩種實現模型,一種是無白板服務器,因此僅支持兩個用戶直接連結;另一種是有白板服務器,原則上不限制同時上線人數和交談室個數,具體實現上可視服務器性能和需要而定。本文要介紹屬于后者。
  
  ----當用戶需用白板與他人交流時,需要先用瀏覽器連到Applet所在主頁,Applet運行后會連接到該白板服務器,和服務器建立TCP連接。每個用戶可以在自己的白板上(嵌在Applet畫面中)繪制圖形和輸入文字,Applet會將這些信息通過已建立的網絡連接發往白板服務器,并不斷偵聽、接收來自白板服務器的圖形和文字信息,將其再現在用戶的白板中。白板服務器的作用是不斷偵聽、接收來自各Applet的信息,并將其轉發給其他用戶。
  
  ----由于瀏覽器對JAVAApplet的限制,使得Applet只能訪問發送該Applet的宿主主機,因此只能在該Applet所在主機上運行白板服務器,使得Applet能建立和遠程白板服務器的聯系。
  
  功能設計
  ----一個實用的電子白板系統應該具備以下基本功能:
  
  用戶在瀏覽到白板主頁時,需登錄后才能進行交流。這將提供交流時用的名字,必要時還可做權限檢查。
  
  用戶能夠根據交談室的交談主題選擇參加和退出現有的交談室,并且能建立新的交談室。可以根據該電子白板系統的應用領域和需要附加一些權限設置。
  
  用戶只能和在同一交談室中的用戶交流。一個交談室的信息對于別的交談室是不可見的。
  
  白板應至少具有一些如更換畫筆顏色、清除畫板(僅影響自己的白板)等方便用戶的功能。
  
  白板應具有一個操作提示和操作信息反饋欄,對用戶顯示一些操作提示和操作結果信息,這樣可以方便用戶使用。
  
  用戶應能暫停和恢復自己的白板工作。
   
  
  ----為了增加白板的實用價值,可以考慮增加如與windows畫筆工具類似的畫正方形、圓形等類似功能。本例作為電子白板基本模型的建立,故沒有加入這些功能。實際上,只要了解了下面要介紹的白板通訊協議集的設計原則,增加以上功能是非常輕易的。
  
  通訊協議集的制定
  ----由于JAVA內置的標準基礎通訊協議是TCP/ip,所以我們只需在其基礎上建立電子白板的應用層協議集。協議集的模型將采用服務器/客戶機的請求/應答模式??梢愿鶕枰獙崿F的白板功能制定通訊協議集,協議集中包括登錄、圖形傳輸(分服務器發出和客戶機發出兩部分)、文字傳輸(分服務器發出和客戶機發出兩部分)、服務器要求刷新交談室及成員名單、客戶機要求刷新交談室及成員名單、加入指定交談室、退出交談室、建立新交談室、暫停/恢復交流等部分。
  
  ----由于已經依靠TCP/IP協議保證數據傳輸的正確性,所以在這個電子白板的通訊協議集的設計中應在保證功能的前提下盡量簡潔,來提高帶寬利用率。白板通訊協議集的細節可參考如下:
  
  ----注重:(S)表示該部分由服務器發出,客戶機接收;
  
  ----(C)表示該部分由客戶機發出,服務器接收;
  
  ----數據格式表示:引號之間表示字符串,(short)表示短整形數(2字節),(int)表示標準整形數(4字節)。
  
  登錄(C):"log"→用戶名字符串。
  
  圖形傳輸(客戶機發出)(C):"draw"→(int)顏色值→(short)直線起點橫坐標→(short)直線起點縱坐標→(short)直線終點橫坐標→(short)直線終點縱坐標。
  
  圖形傳輸(服務器發出)(S):"draw"→(int)顏色值→(short)直線起點橫坐標→(short)直線起點縱坐標→(short)直線終點橫坐標→(short)直線終點縱坐標。
  
  文字傳輸(客戶機發出)(C):"text"→用戶在白板對話框中輸入的文字字符串。
  
  文字傳輸(服務器發出)(S):"text"→文字輸入者姓名字符串→該用戶輸入的文字字符串。
  
  服務器要求刷新交談室及成員名單(S):"refresh"→交談室1主題字符串→交談室1中的用戶1姓名字符串→交談室1中的用戶2姓名字符串→...→"complete"→交談室2主題字符串→交談室2中的用戶1姓名字符串→交談室2中的用戶2姓名字符串→...→"complete"→...→最后一個交談室主題字符串→最后一個交談室中的用戶1姓名字符串→最后一個交談室中的用戶2姓名字符串→...→"complete"→"ok"。
  
  客戶機要求刷新交談室及成員名單(C):"refresh"。(服務器收到此命令,會執行前面的服務器要求刷新交談室及成員名單子協議,以響應客戶機請求)
  
  加入指定交談室(C):"join"→申請加入的交談室主題字符串。
  
  退出交談室(C):"quit"。
  
  建立新交談室(C):"new"→申請建立的新交談室主題字符串。(服務器收到此命令,會自動在該用戶原來所在的交談室中注銷,并使該用戶成為新交談室的一員)
  
  暫停交流(C):"pause"。
  
  恢復交流(C):"continue"。
   
  
  ----以上為本電子白板軟件所遵循的通訊協議集。這個協議集的可擴充性很強,可以隨時按增加的功能擴充協議集。例如需要傳送圓形圖案,則可將如下協議加到協議集中:"circle"→(int)顏色值→(short)圓心橫坐標→(short)圓心縱坐標→(short)圓半徑。
  
  編程實現
  ----程序設計分服務器JAVAapplication和客戶端JAVAApplet兩部分進行。
  
  ----編程中需要注重以下幾點:
  
  服務器程序不要采用客戶端接入時建立用戶線程,退出交談室時銷毀線程的工作流程。因為有些操作系統的線程操作機制不夠健全,在線程銷毀時線程所占資源不能被完全釋放,以致于在白板服務器運行的過程中將逐漸消耗掉系統資源。所以應在服務器初始化時按照最大答應同時上線的用戶數建立所有用戶服務線程。這些線程將等待客戶端接入,當用戶退出交談室時線程并不銷毀,而是清除用戶數據,重新進入等待接入狀態,預備為下一個用戶服務。這樣就保證了白板服務器可以長期可靠運行。
  
  當用戶在白板上連續繪畫時可能產生大量的圖形數據,客戶端Applet若在白板的AWT事件處理程序中完成將這些數據傳輸給服務器的任務,則很有可能由于網絡I/O的瓶頸作用,使得AWT事件處理線程受阻,從而影響白板Applet、瀏覽器、其他正在運行的應用軟件的界面相應性。解決的辦法就是使Applet再建立一個后臺繪圖數據傳輸線程,白板的AWT事件處理程序將用戶的繪圖數據通過管道流(PipedStream)傳輸給這個線程后就返回,把網絡傳輸的任務留給這個線程進行。
  
  在服務器和客戶端Applet中,協議集每一個子協議的實現都要分別建立一個同步塊(synchronize),該子協議的全部操作都要在這個同步塊內完成,以限制自由訪問網絡接插建立的輸入流和輸出流。使得當一個線程執行一個子協議時能夠獨占這些網絡資源,而使別的線程不能訪問這些資源,以保證線程能夠完整正確地執行子協議。但是由于同步操作會降低線程調度和執行效率,所以要在確保子協議完整執行的前提下盡量縮小同步代碼塊的范圍。
  
  由于協議集中的數據類型既有字符串又有整形數,因此在程序中選用DataInputStream和DataOutputStream作為數據輸入流和輸出流。此外,由于UTF格式的文本支持中文字符集,且在字符串中已包含長度信息,可以方便數據讀取,故在本程序的網絡通信中的字符串全部采用UTF格式。設計自己的白板程序時,可以根據需要換用其他文本格式和編碼規則,但一定要保證輸入流和輸出流采用的是同一種格式和編碼。
  
  考慮到目前NetscapeNavigator3.0和InternetExplorer3.0目前仍普遍使用,而這兩種瀏覽器的JAVA虛擬機都不支持較新的JDK1.1標準,所以在本程序的客戶機Applet部分中沒有使用JDK1.1特有的類庫。
   
  
  ----首先介紹服務器程序的編制。需確定主要的幾個類及其成員函數。列表如下:
  ----ChatServer類:
  ----服務器程序的啟動類。
  ----ChatServer():建立服務器治理界面。
  ----initServer():建立服務器插結,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av电影免费观看 | 亚洲性综合网 | 黄色片小说 | 成人不卡一区二区 | 国产美女一区二区在线观看 | 91精品国产91久久久久久不卞 | 亚洲一区二区三区在线免费观看 | 亚洲第一激情网 | 久久色伦理资源站 | 久久久久亚洲精品国产 | 色婷婷久久一区二区 | 色播视频在线播放 | 成人av一二三区 | 亚洲一区二区在线视频 | 日日艹夜夜艹 | 91丨九色丨国产在线观看 | 天天鲁在线视频免费观看 | 久久毛片免费 | 黄色特级一级片 | 黑人一级片视频 | 久草视频免费 | 国产精品片一区二区三区 | 成人高清网站 | 一级一级一级毛片 | 成人精品视频在线 | 成人羞羞视频在线观看免费 | 国产精品久久久久久久久久 | 伊久在线 | 中日无线码1区 | 九九久久视频 | 久久婷婷一区二区三区 | 毛片a级毛片免费播放100 | 在线成人一区二区 | 狠狠干精品视频 | 亚洲欧美国产高清 | 日本aⅴ在线 | 免费中文视频 | 国产成人av免费观看 | 久久久久久久久久久久久国产精品 | 91青青| 综合国产在线 |