課程設計報告-- 基于java的視頻會議系統(tǒng)設計與實現(xiàn)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、<p><b>  目 錄</b></p><p>  目 錄I</p><p><b>  第一章 概述1</b></p><p>  1.1 本課題的研究背景1</p><p>  1.2 本課題的研究意義1</p><p>  

2、1.3 本報告的目的、內(nèi)容及作者的主要貢獻2</p><p>  1.3.1 本報告的目的2</p><p>  1.3.2 本報告的內(nèi)容2</p><p>  1.3.3 作者主要貢獻2</p><p>  1.4 國內(nèi)外相近研究課題的特點及發(fā)展趨勢2</p><p>  1.5 現(xiàn)行研究存在的問題及解決辦

3、法3</p><p>  1.5.1 需求分析問題3</p><p>  1.5.2 系統(tǒng)設計問題3</p><p>  1.5.4 代碼實現(xiàn)問題3</p><p>  1.5.5 界面設計問題3</p><p>  1.6 本課題要達到的設計目標3</p><p>  第二章 系

4、統(tǒng)分析4</p><p>  2.1可行性分析4</p><p>  2.1.1 技術(shù)可行性4</p><p>  2.1.2 操作可行性4</p><p>  2.2 采用的關鍵技術(shù)介紹4</p><p>  2.2.1 JAVA多媒體技術(shù)4</p><p>  2.2.2

5、JAVA 網(wǎng)絡編程技術(shù)5</p><p>  2.3 系統(tǒng)需求分析6</p><p>  第三章 系統(tǒng)概要設計7</p><p>  3.1 系統(tǒng)總體設計7</p><p>  3.1.1 運行環(huán)境7</p><p>  3.1.2 系統(tǒng)流程7</p><p>  3.1.3 系統(tǒng)結(jié)

6、構(gòu)8</p><p>  3.2 系統(tǒng)接口的概要設計9</p><p>  3.2.1 服務器端設計9</p><p>  3.2.2 客戶端設計9</p><p>  3.3 系統(tǒng)出錯處理設計10</p><p>  3.3.1 出錯信息及處理方法10</p><p>  3.3.

7、2系統(tǒng)維護設計10</p><p>  第四章 系統(tǒng)詳細設計11</p><p>  4.1 文本聊天模塊的詳細設計11</p><p>  4.2 視頻通信模塊的詳細設計12</p><p>  4.2.1 網(wǎng)絡視頻會議系統(tǒng)結(jié)構(gòu)的詳細設計12</p><p>  4.2.2 視音頻傳輸?shù)脑敿氃O計13<

8、;/p><p>  4.2.2 多播的詳細設計14</p><p>  4.3 系統(tǒng)界面的詳細設計14</p><p>  第五章 系統(tǒng)實現(xiàn)15</p><p>  5.1 系統(tǒng)開發(fā)環(huán)境15</p><p>  5.2 系統(tǒng)實現(xiàn)15</p><p>  5.2.1 服務器端套接字建立15

9、</p><p>  5.2.2 客戶端套接字建立15</p><p>  5.2.3 視音頻發(fā)送16</p><p>  5.2.4 視音頻接收17</p><p>  第六章 性能測試與分析18</p><p>  6.1 測試實例(測試集)的研究與選擇18</p><p>  6

10、.2 性能分析18</p><p>  第七章 課程設計總結(jié)19</p><p>  7.1 系統(tǒng)總結(jié)19</p><p>  7.1.1 系統(tǒng)特點介紹19</p><p>  7.1.2 系統(tǒng)存在的問題19</p><p>  7.2 系統(tǒng)改進建議或設想19</p><p>  7

11、.3 課程設計心得體會19</p><p><b>  參考文獻21</b></p><p><b>  第一章 概述</b></p><p>  1.1 本課題的研究背景</p><p>  隨著人們對視頻和音頻信息的需求愈來愈強烈,追求遠距離的視音頻的同步交互成為新的時尚。近些年來,依托計算

12、機技術(shù)、通信技術(shù)和網(wǎng)絡條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活、遠程醫(yī)療、遠程通訊的樂趣,縮短了時區(qū)和地域的距離。遠程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領域進行更加深入的探索。基于不同平臺以及不同開發(fā)工具的網(wǎng)絡視頻會議系統(tǒng)層出不窮。</p><p>  視頻會議系統(tǒng)在我國開始發(fā)展的初期,政府部門的應用就占據(jù)了重要位置,覆蓋中央到直轄市和各

13、省會城市的國家公眾視頻會議骨干網(wǎng)已經(jīng)完工。自1994年9月投入使用以來,國務院等機關先后利用該網(wǎng)召開了三百多次全國范圍的可視通訊會議。整個系統(tǒng)運行情況良好,得到了國家領導人和各部委領導的高度贊揚。近年來隨著電子政務工程的逐步推進,政府部門更加關注視頻會議系統(tǒng)建設。在經(jīng)濟發(fā)達地區(qū)(例如浙江、山東、廣東),視頻會議網(wǎng)已覆蓋到地市級城市,有的甚至覆蓋到縣一級。除各級政府之外,其它諸如檢察院、法院、公安和和水利等職能部門也是視頻會議系統(tǒng)的重要用

14、戶。</p><p>  視頻會議系統(tǒng)還更廣泛的應用于現(xiàn)代企業(yè)中。信息技術(shù)的迅猛發(fā)展,改變了各行各業(yè)的傳統(tǒng)工作模式。信息的無限量擴大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應用等導致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應和決策,更貼切的市場宣傳和服務。所有這一切是由于信息技術(shù)的發(fā)展帶來的,同樣也要求有先進的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會議系統(tǒng)的可以跨越空

15、間距離、靈活多樣的面對面的交互,適應現(xiàn)代社會的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透,給這一市場注入了新的活力。</p><p>  1.2 本課題的研究意義</p><p><b>  從實用方面:</b></p><p>  視頻會議系統(tǒng)是指通過現(xiàn)有的各種電氣通訊傳輸媒體,將人物的靜態(tài)/動態(tài)

16、圖像、語音、文字、圖片等多種信息分送到各個用戶的計算機上,使得在地理上分散的用戶可以共聚一處,通過圖形、聲音等多種方式交流信息,增加雙方對內(nèi)容的理解能力。視頻會議系統(tǒng)對于減少差旅費用等機構(gòu)開支;提高機構(gòu)運作效率;提高機構(gòu)形象有利于加強對外交往;有利于政策方針的迅速準確傳達;有利于廣泛收集意見;有利于加強內(nèi)部交流;員工培訓等方面帶來巨大的直接和間接效益。由于視頻會議系統(tǒng)的這些優(yōu)點,使得視頻會議系統(tǒng)備受關注。并且已經(jīng)有越來越多的人利用這種方

17、式進行交流溝通,不僅方便而且拉近了人與人之間的距離?,F(xiàn)在的一些軟件像QQ以及MSN等軟件為人們的視頻聊天提供了許多方便。</p><p><b>  從學習知識方面:</b></p><p>  通過做這樣一個課題,對學習無疑是十分有益的。尤其在學習了JAVA編程之后更有欲望對其進行深層次的學習,并且可以結(jié)合各方面的知識進行多方面的學習,積累更多知識。</p&g

18、t;<p>  1.3 本報告的目的、內(nèi)容及作者的主要貢獻</p><p>  1.3.1 本報告的目的</p><p>  本報告對基于JAVA的點對點視頻會議系統(tǒng)做出詳細地需求分析,并對其設計與實現(xiàn)過程進行詳細的論述。目的在于闡明本視頻會議系統(tǒng)如何能夠?qū)崿F(xiàn)多人在線舉行會議。</p><p>  1.3.2 本報告的內(nèi)容</p><

19、;p>  本報告內(nèi)容上從視頻會議的開發(fā)背景開始論述,研究并確定了開發(fā)環(huán)境,并對該視頻會議系統(tǒng)的需求做出了詳細的分析,根據(jù)其需求及開發(fā)工具的功能特性確立課題的設計方案及開發(fā)策略。并對課題的概要設計、詳細設計以及代碼實現(xiàn)過程和后期的測試過程,須改進的部分都進行了詳細的說明。</p><p>  1.3.3 作者主要貢獻</p><p>  本報告中,作者的主要貢獻:對該視頻會議系統(tǒng)進行可

20、行性分析、需求分析、功能模塊設計、各個功能的代碼實現(xiàn)、良好用戶操作界面的設計與實現(xiàn)、對各功能實現(xiàn)結(jié)果的測試等。</p><p>  1.4 國內(nèi)外相近研究課題的特點及發(fā)展趨勢</p><p>  視頻會議是近幾年才發(fā)展起來的多媒體通信技術(shù)。視頻會議可實時傳送聲音、圖象;使每位與會者都有身臨其境的感覺。此外,它還提供文件傳真、靜止圖文傳送、白板等一系列輔助服務項目。視頻會議最初是"

21、點對點"的會議傳輸(point to point),現(xiàn)已發(fā)展到"一點對多點"(point to multi points)及"多點到多點"(multi points to multi points)階段。</p><p>  視頻會議系統(tǒng)的關鍵技術(shù) :1)多媒體信息處理技術(shù)2)寬帶網(wǎng)絡技術(shù)3)分布式處理技術(shù)視頻會議實現(xiàn)點對點、一點對多點、多點之間的實時同步交互通信

22、。</p><p>  視頻會議的發(fā)展趨勢:</p><p>  系統(tǒng)功能多元化具有圖文同傳功能:除視音頻外,可以方便地傳送和顯示電腦文檔用于培訓、匯報、交流;視頻會議與電話系統(tǒng)渾然一體:可方便接入會議電話系統(tǒng),通過電話、手機也可加入會議等。</p><p>  系統(tǒng)組網(wǎng)多樣化,有網(wǎng)絡就能開會。</p><p>  圖像清晰化:視頻會議需要更

23、優(yōu)異、更清晰、更成熟的圖像編解碼技術(shù)。</p><p>  使用、維護簡捷化:易于使用,可自行組織、控制會議;進行遠程管理、遠程維護、升級,降低維護成本;更新設計,大幅提高系統(tǒng)穩(wěn)定性。</p><p>  1.5 現(xiàn)行研究存在的問題及解決辦法</p><p>  1.5.1 需求分析問題</p><p>  開始對課題所研究的問題不是很明確,

24、如其應用范圍,具體功能等。通過老師的講解及指導和查相關資料得以解決。</p><p>  由于幾乎沒有使用過視頻會議,對其的了解也不太深刻,老師給講解了一些內(nèi)容,在網(wǎng)上下載了一個視頻會議系統(tǒng)的軟件試用了一下,并查閱了許多相關資料,這才可以對該課題進行需求分析。</p><p>  1.5.2 系統(tǒng)設計問題</p><p>  在該視頻會議系統(tǒng)的設計上遇到了很多問題:

25、如何準確的定位網(wǎng)絡上一臺或多臺主機,如何找到主機后如何可靠高效的進行數(shù)據(jù)傳輸;建立網(wǎng)絡之間會話;圖像的采集、壓縮及編碼;網(wǎng)絡視頻的傳輸;系統(tǒng)的界面設計等問題。</p><p>  1.5.4 代碼實現(xiàn)問題</p><p>  在具體的功能實現(xiàn)上,編碼遇到了極大的困難。因為該課題需要用到很多以前從未接觸到的知識,如需要用JMF,RTP協(xié)議傳輸視頻,JAVA socket編程,如何采集圖像等知

26、識。在用JAVA語言編碼過程中,因編程規(guī)范及其他各種語法問題出現(xiàn)了很多錯誤,通過老師指導和查閱資料得以解決。</p><p>  1.5.5 界面設計問題</p><p>  本課題采用eclipse開發(fā)平臺,裝載ve插件后,用其進行圖形界面的設計和實現(xiàn)。并且在試用所下載的視頻會議系統(tǒng)后,有很大心得,根據(jù)其界面的合理性,模仿設計本課題中界面。</p><p>  1

27、.6 本課題要達到的設計目標</p><p>  本課題致力于實現(xiàn)實現(xiàn)點對點的視頻傳輸并完成基本功能(如動態(tài)視頻傳輸、文本傳輸?shù)龋峁┒嗳送瑫r在線舉行會議。包含以下內(nèi)容:</p><p>  1.動態(tài)視頻傳輸:視頻雙方可以看到對方的動態(tài)圖像。</p><p>  2.聲音傳輸:在視頻或非視頻狀態(tài)下可以聽到對方的聲音,進行語音交流。</p><p

28、>  3.文本傳輸:可以通過文本輸入進行交流。</p><p><b>  第二章 系統(tǒng)分析</b></p><p>  本課題為實現(xiàn)多人在線同時舉行會議的功能,對該視頻會議系統(tǒng)做了詳細的系統(tǒng)分析。包括系統(tǒng)的可行性分析、對開發(fā)用到的關鍵技術(shù)的介紹以及系統(tǒng)的需求分析。</p><p><b>  2.1可行性分析</b&

29、gt;</p><p>  2.1.1 技術(shù)可行性</p><p>  網(wǎng)絡視頻會議是順應市場的需求而設計的。采用JAVA 編程語言,用eclipse開發(fā)平臺實現(xiàn)。用到多媒體技術(shù)(JAVA 多媒體框架JMF),視頻和音頻用TRP協(xié)議傳輸,用到Socket編程技術(shù),多播技術(shù)。網(wǎng)絡視頻會議首先是基于網(wǎng)絡傳輸?shù)?,那么就必然要依托于JAVA網(wǎng)絡編程的相關知識。在這基礎上,由于相關音頻、視頻,所以還

30、要涉及到JAVA的多媒體技術(shù)的相關知識,即JMF (Java Media Framework)。利用JAVA的這個組件,我們可以方便的處理多媒體文件,并基于RTP協(xié)議進行實時傳輸。</p><p>  2.1.2 操作可行性</p><p>  系統(tǒng)運行于Windows環(huán)境,其用戶操作界面友好,便于操作,適合視頻會議流程。</p><p>  系統(tǒng)的基本操作如下:&

31、lt;/p><p><b>  1.啟動服務器;</b></p><p>  2.用戶連接到服務器;</p><p><b>  3.進行視頻連接;</b></p><p><b>  4.舉行會議;</b></p><p>  5.會議完畢,退出系統(tǒng)。&l

32、t;/p><p>  2.2 采用的關鍵技術(shù)介紹</p><p>  2.2.1 JAVA多媒體技術(shù)</p><p>  JAVA多媒體技術(shù)的核心是Java媒體框架 JMF(Java Media Framework)。JMF中包含了許多用于處理多媒體的API,它是一個很好的多媒體編程工具,同時也是一個相當復雜的系統(tǒng)。JMF的主要應用功能之一是多媒體數(shù)據(jù)流在網(wǎng)絡中的實時

33、傳輸,其RTP包中提供的RTP包中提供的RTPManager(RTP管理器)、TrackContol(軌道控制器)、SendStream(發(fā)送數(shù)據(jù)流)、ReceiveStream(接收數(shù)據(jù)流)、InetAddress(IP地址)和SessionAddress(會話地址)等類使得編寫網(wǎng)絡實時數(shù)據(jù)傳輸變得容易,基于RTP協(xié)議的RTP應用程序框架為實現(xiàn)流媒體在網(wǎng)絡中實時傳輸提供了Java程序框架,應用它可方便的實現(xiàn)多媒體數(shù)據(jù)流在網(wǎng)絡中的實時傳

34、輸。實時傳輸協(xié)議RTP是在Internet網(wǎng)上針對多媒體數(shù)據(jù)流的一種傳輸協(xié)議,RTP被定義為在一對一獲一對多的傳輸情況下工作的,其目的是提供時間信息和實現(xiàn)多媒體數(shù)據(jù)流的同步。RTP由RTP和RTCP(實時控制協(xié)議)兩個部分組成。RTP本身并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機制,可不提供流量控制或擁塞控制,它</p><p>  2.2.2 JAVA 網(wǎng)絡編程技術(shù)</p><p>  

35、網(wǎng)絡編程的目的就是指直接或間接地通過網(wǎng)絡協(xié)議與其他計算機進行通訊。網(wǎng)絡編程中有兩個主要的問題,一個是如何準確的定位網(wǎng)絡上一臺或多臺主機,另一個就是找到主機后如何可靠高效的進行數(shù)據(jù)傳輸。在TCP/IP協(xié)議中IP層主要負責網(wǎng)絡主機的定位,數(shù)據(jù)傳輸?shù)穆酚?,由IP地址可以唯一地確定Internet上的一臺主機。而TCP層則提供面向應用的可靠的或非可靠的數(shù)據(jù)傳輸機制,這是網(wǎng)絡編程的主要對象,一般不需要關心IP層是如何處理數(shù)據(jù)的?! ∧壳拜^為流行

36、的網(wǎng)絡編程模型是客戶機/服務器(C/S)結(jié)構(gòu)。即通信雙方一方作為服務器等待客戶提出請求并予以響應??蛻魟t在需要服務時向服務器提出申請。服務器一般作為守護進程始終運行,監(jiān)聽網(wǎng)絡端口,一旦有客戶請求,就會啟動一個服務進程來響應該客戶,同時自己繼續(xù)監(jiān)聽服務端口,使后來的客戶也能及時得到服務。</p><p>  數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)?,這些包稱為數(shù)據(jù)報(datagram).但是,由于數(shù)據(jù)報長

37、度有限,通常必須將數(shù)據(jù)分解為多個包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網(wǎng)絡視頻會議的實時性要求,不可能讓視頻傳輸?shù)拿恳回懚紲蚀_無誤。而TCP協(xié)議正是為數(shù)據(jù)可靠傳輸而設計的。那么選擇UDP協(xié)議,即用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP),就成為一種必然。</p><p>  Socket是網(wǎng)絡上運行的兩個程序間雙向通訊的一端,它既可以接受請求,也可以發(fā)送

38、請求,利用它可以較為方便的編寫網(wǎng)絡上數(shù)據(jù)的傳遞。在Java中,有專門的Socket類來處理用戶的請求和響應。利用Socket類的方法,就可以實現(xiàn)兩臺計算機之間的通訊。在Java中Socket可以理解為客戶端或者服務器端的一個特殊的對象,這個對象有兩個關鍵的方法,一個是getInputStream方法,另一個是getOutputStream方法。getInputStream方法可以得到一個輸入流,客戶端的Socket對象上的getInpu

39、tStream方法得到的輸入流其實就是從服務器端發(fā)回的數(shù)據(jù)流。GetOutputStream方法得到一個輸出流,客戶端Socket對象上的getOutputStream方法返回的輸出流就是將要發(fā)送到服務器端的數(shù)據(jù)流,(其實是一個緩沖區(qū),暫時存儲將要發(fā)送過去的數(shù)據(jù))。</p><p>  多播通信是一類特殊的IP地址(D類IP地址)這些IP地址并不和任何主機關聯(lián),而是專門為多播通信保留下來的,地址范圍224.0.0

40、.1-239.255.255.255這間,其中224.0.0.1-224.0.0.255是留作為多播路由信息使用的。此外,所有其它D類IP地址都可以隨便進行通信。</p><p>  2.3 系統(tǒng)需求分析</p><p>  由于政府部門和企事業(yè)單位對視頻會議系統(tǒng)有強烈需求,并且人們對視頻和音頻信息的需求愈來愈強烈,所以有必要開發(fā)一個網(wǎng)絡視頻會議系統(tǒng)。并且近些年來,依托計算機技術(shù)、通信技術(shù)

41、和網(wǎng)絡條件的發(fā)展,集音頻、視頻、圖像、文字、數(shù)據(jù)為一體的多媒體信息,使越來越多的人開始通過互聯(lián)網(wǎng)享受到網(wǎng)上生活的樂趣,縮短了時區(qū)和地域的距離。遠程通信的各種優(yōu)勢給人們帶來的方便也促使人們對這一領域進行更加深入的探索?,F(xiàn)代社會中信息的無限量擴大,交通工具的便捷,互聯(lián)網(wǎng)技術(shù)的充分應用等導致了行業(yè)間競爭的全球化,這就要求現(xiàn)代部門、企業(yè)要具備更加靈敏的神經(jīng),更扁平化的管理,更快速的反應和決策,更貼切的市場宣傳和服務。所有這一切是由于信息技術(shù)的發(fā)

42、展帶來的,同樣也要求有先進的信息技術(shù)來提高部門、企業(yè)的競爭力。視頻會議系統(tǒng)的可以跨越空間距離、靈活多樣的面對面的交互,適應現(xiàn)代社會的方便、快捷、高效、快節(jié)奏,它為用戶帶來的經(jīng)濟效益,使視頻會議系統(tǒng)的使用正在向各行各業(yè)滲透。視頻會議系統(tǒng)是支持人們遠距離進行實時信息交流、開展協(xié)同工作的應用系統(tǒng)。視頻會議系統(tǒng)實時傳輸視頻與音頻信息,使協(xié)作成員可以遠距離進行直觀、真實的視音頻交流。另一方面,利用多媒</p><p>  

43、第三章 系統(tǒng)概要設計</p><p>  3.1 系統(tǒng)總體設計</p><p>  3.1.1 運行環(huán)境</p><p>  操作系統(tǒng):Windows 2000/XP/2003 等</p><p><b>  安裝JDK</b></p><p><b>  安裝JMF</b>

44、</p><p><b>  安裝eclipse</b></p><p><b>  安裝攝像頭</b></p><p>  3.1.2 系統(tǒng)流程 </p><p>  服務器端流程如圖3.1所示:</p><p>  圖3.1 服務器端流程圖</p><

45、p>  客戶端流程如圖3.2 所示:</p><p>  圖3.2 客戶端流程圖</p><p>  3.1.3 系統(tǒng)結(jié)構(gòu)</p><p>  通過學習和研究,我們通過多播技術(shù)實現(xiàn)了多點對多點的視頻會議系統(tǒng)。整個系統(tǒng)包括這樣幾個模塊:</p><p>  文本聊天模塊:該功能是網(wǎng)絡視頻會議的最基本的功能。通過該模塊實現(xiàn)了會議成員的聊天通

46、信。首先,每個會議職員通過與服務器連接加入到會議組,同時通過給自己取昵稱將自己的昵稱發(fā)送給服務器,讓會議組的每個成員了解自己的身份。會議成員在聊天的時候不是將文本發(fā)送給某個人,而是發(fā)送給整個會議組。</p><p>  視頻通信模塊:該功能利用JMF軟件開發(fā)包,基于RTP協(xié)議實時發(fā)送和接受視頻流。并且利用JMF多媒體組件構(gòu)造播放器,進行實時播放。在實現(xiàn)了點對點的基本視頻傳輸?shù)幕A上,我們應用了多播技術(shù)。當某個會議

47、成員開始進行視頻連接以后,他能通過視頻會議系統(tǒng)看到所有其他已經(jīng)建立視頻連接會議成員。</p><p>  3.2 系統(tǒng)接口的概要設計</p><p>  3.2.1 服務器端設計</p><p>  系統(tǒng)的服務器端的設計只需顯示在線的用戶,簡單設計圖示如下:</p><p>  圖3.3 系統(tǒng)服務器端設計</p><p&g

48、t;  3.2.2 客戶端設計</p><p>  系統(tǒng)客戶端的設計如下:</p><p><b>  顯示在線列表;</b></p><p>  顯示界面中用戶視頻;</p><p><b>  用戶聊天文本框;</b></p><p>  視頻連接及退出按鈕。</p

49、><p><b>  簡單設計圖示如下:</b></p><p>  圖3.4 系統(tǒng)客戶端設計</p><p>  3.3 系統(tǒng)出錯處理設計</p><p>  3.3.1 出錯信息及處理方法</p><p>  系統(tǒng)輸出信息的形式、含意及處理方法。見表3.1。</p><p>

50、;  表3.1 出錯信息及處理方法</p><p>  3.3.2 系統(tǒng)維護設計 </p><p>  為了保證系統(tǒng)的穩(wěn)定運行,本系統(tǒng)在設計時考慮到了系統(tǒng)的安全性、可靠性、兼容性、可擴展性等因素。了很多驗證條件,盡量保證信息的合法性與正確性,是系統(tǒng)能夠穩(wěn)定運行。此外本系統(tǒng)的設計還保證了系統(tǒng)功能的可擴展性。</p><p>  安全性:在視頻會議系統(tǒng)前端安置加密機或者

51、直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設備可直接提供加密能力,從而實現(xiàn)用戶的身份驗證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。</p><p>  可靠性:該系統(tǒng)設計的合理性保證了可靠穩(wěn)定的運行,支持當前大多數(shù)硬件平臺,核心線程優(yōu)先保護、數(shù)據(jù)流容錯的設計思路使系統(tǒng)可更加穩(wěn)定的運轉(zhuǎn)。</p><p>  兼容性:該系統(tǒng)擁有開放的集成接口,可以非常靈活的與用戶集成,并滿足用戶的需要,實現(xiàn)其

52、功能。</p><p>  可擴展性:該系統(tǒng)可進行再擴展,在此基礎上擴展為一點對多點,多點對多點的視頻會議系統(tǒng)。</p><p>  第四章 系統(tǒng)詳細設計</p><p>  本系統(tǒng)的詳細設計根據(jù)概要設計中所劃分的各個功能模塊進行詳細的闡述:</p><p>  4.1 文本聊天模塊的詳細設計</p><p>  本系

53、統(tǒng)要運用Java網(wǎng)絡編程中Socket層次,即傳統(tǒng)網(wǎng)絡編程常采用的方式,通過Client/Server(客戶端/服務器端)機構(gòu)的應用程序之間建立Socket套接字連接,然后在連接之上進行數(shù)據(jù)通信。</p><p>  通過SocketChannel建立基于UDP的無阻塞連接。創(chuàng)建一個無阻塞服務器,讓每個客戶端與之相連。某個客戶端將文本消息發(fā)送給無阻塞的服務器,服務器在將這條文本消息組播給各個與之相連的客戶端。&l

54、t;/p><p>  數(shù)據(jù)在Internet中是以有限大小的包形式傳輸?shù)?,這些包稱為數(shù)據(jù)報(datagram).但是,由于數(shù)據(jù)報長度有限,通常必須將數(shù)據(jù)分解為多個包,在目的地再重新組合。有可能一包或多個包在傳輸中丟失或遭到破壞。由于網(wǎng)絡視頻會議的實時性要求,不可能讓視頻傳輸?shù)拿恳回懚紲蚀_無誤。而TCP協(xié)議正是為數(shù)據(jù)可靠傳輸而設計的。那么選擇UDP協(xié)議,即用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,U

55、DP),就成為一種必然。</p><p>  基于UDP的Socket編程流程圖如下:</p><p>  圖4.1 數(shù)據(jù)報套接字流程圖</p><p><b>  服務器:</b></p><p>  serverSocketChannel = ServerSocketChannel.open();//打開連接通道&l

56、t;/p><p>  serverSocketChannel.socket().bind(new InetSocketAddress(12345));//綁定IP與端口號</p><p>  getConnection();//接收連接請求</p><p><b>  客戶端:</b></p><p>  socketCha

57、nnel = SocketChannel.open();打開連接通道</p><p>  socketChannel.connect(new InetSocketAddress(InetAddress.getByName</p><p>  (serverAddress),12345));//連接到服務器</p><p>  receiveMessage = new

58、 ReceivingThread();//構(gòu)造接收信息線程</p><p>  receiveMessage.start();//運行線程</p><p>  socketChannel.write(writeBuffer);//往通道里寫入消息</p><p>  socketChannel.read(readBuffer);//讀取通道中消息</p>

59、<p>  4.2 視頻通信模塊的詳細設計</p><p>  4.2.1 網(wǎng)絡視頻會議系統(tǒng)結(jié)構(gòu)的詳細設計</p><p>  網(wǎng)絡視頻會議系統(tǒng)其根本目的是會議。會議的基本特征就是,參與會議的每個成員都可以了解到其他成員的狀況,每個成員必須到場,然后進行交流,并且每個成員都應該看到所有的交流內(nèi)容。在這個根本目的完成的基礎上,才可以使網(wǎng)絡視頻會議的特點得以發(fā)揮。所以,我們的視頻

60、會議系統(tǒng)采用了多播的方法,使得會議的每個成員都可以得到會議的所有信息。</p><p>  通過對視頻會議基本特點的分析,系統(tǒng)結(jié)構(gòu)圖如下圖所示:</p><p>  圖4.2 網(wǎng)絡視頻會議系統(tǒng)結(jié)構(gòu)圖</p><p>  4.2.2 視音頻傳輸?shù)脑敿氃O計</p><p>  使用JMF API的RTP協(xié)議實現(xiàn)網(wǎng)絡多媒體程序,可以分為兩個部分,一

61、部分是通過網(wǎng)絡發(fā)送數(shù)據(jù)的主機端程序,另一部分是接收數(shù)據(jù)的客戶端程序。</p><p>  在JMF API中定義了幾個與RTP有關的包,即javax.media.rtp、javax.media.rtp.enent、javax.media.rtp.rtcp登包,通過這些包提供的API,可以實現(xiàn)RTP數(shù)據(jù)流的傳輸、接受和回放。基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程圖如下:</p><p&

62、gt;  圖4.3 基于JMF多媒體數(shù)據(jù)流RTP傳輸、接受和回放過程</p><p>  數(shù)據(jù)可以來自于多媒體文件,如視頻文件,也可以來自于音/視頻采集設備,如聲卡、攝像頭等。這些數(shù)據(jù)源的位置不同,格式不同,JMF通過一個稱為媒體定位器(Media—Locator)的類對相應的數(shù)據(jù)源進行定位,MediaLocator對象內(nèi)仔儲了數(shù)據(jù)源的位置信息。JMF管理器(Manager)根據(jù)媒體定位器提供的信息創(chuàng)建數(shù)據(jù)源。這

63、個數(shù)據(jù)源和文件、攝像頭等物理數(shù)據(jù)源不同,是一個抽象的概念,是多種不同類型數(shù)據(jù)源的抽象。這樣,JMF可以隱藏底層細節(jié),使編程者在編程過程中不再考慮數(shù)據(jù)的具體來源和位置,只需考慮數(shù)據(jù)的格式、速率等信息就行了。</p><p>  數(shù)據(jù)源生成后 ,可以直接交給播放器(Player),設定格式后就可以在本機播放了。但若要將數(shù)據(jù)流存儲成其他格式的文件或者通過 RTP協(xié)議在網(wǎng)絡上傳輸 ,則需要對其進行再處理。再處理工作由處理

64、器(Processor)完成 ,處理后的數(shù)據(jù)源可以存儲,也可以在網(wǎng)絡上傳輸。通過 RTP進行傳輸前 ,需要建立會話管理器(SessionManager),建立 RTP會話后再開始發(fā)送流,發(fā)送時會打開兩個端口,一個用于傳輸 RTP數(shù)據(jù)流;另一個用來傳輸 RTCP包。</p><p>  多媒體數(shù)據(jù)流的接收過程是發(fā)送的逆過程。由RTP信道獲得的數(shù)據(jù)流作為接收端的數(shù)據(jù)源,對數(shù)據(jù)源處理后便可以實現(xiàn)數(shù)據(jù)流的回放、存儲,甚至

65、再發(fā)送。</p><p><b>  詳細設計傳輸過程:</b></p><p>  dsVideo = createDataSource(vf);//創(chuàng)建視頻數(shù)據(jù)源</p><p>  dsAudio = createDataSource(af);//創(chuàng)建音頻數(shù)據(jù)源</p><p>  devices = Captur

66、eDeviceManager.getDeviceList(format);//得到類型為format的設備的清單,存放在表devices中</p><p>  ds = Manager.createDataSource(ml);//通過媒體定位器創(chuàng)建數(shù)據(jù)源</p><p>  RTPTransmit rtpTransmit = new RTPTransmit(processor,ipAdd

67、r,port);//構(gòu)造RTP會話</p><p>  result = createProcessor();// 產(chǎn)生一個處理器</p><p>  result = createTransmitter();產(chǎn)生RTP會話,將處理器輸出的數(shù)據(jù)傳給指定的IP地址的指定的端口號</p><p>  processor.start();// 讓處理器開始傳輸</p

68、><p>  4.2.2 多播的詳細設計</p><p>  多播基本思想是一個源IP主機只進行一次發(fā)送,多個接收者(目標 IP主機)可以接收到相同數(shù)據(jù)的一個拷貝。但是多個接收者必須都注冊加入同一多播組。IP多播服務是一種開放的服務模型,任何主機可以隨時加入或退出某個多播組。</p><p>  利用這種思想,可以實現(xiàn)會議中的多點對多點的視頻傳輸,已達到組織會議的目的。

69、多播系統(tǒng)結(jié)構(gòu)圖:</p><p>  圖4.4 多播系統(tǒng)結(jié)構(gòu)圖</p><p><b>  多播實現(xiàn)過程:</b></p><p>  group = InetAddress.getByName(MuiltAddr); //設置組播地址</p><p>  socket = new MulticastSocket(por

70、t); //創(chuàng)建MulticastSocket類并將端口與之關聯(lián)</p><p>  socket.joinGroup(group); //加入此組播組</p><p>  4.3 系統(tǒng)界面的詳細設計</p><p>  本系統(tǒng)在進行界面設計的時候考慮了系統(tǒng)的功能,對各功能模塊進行詳細合理的布局:</p><p>  1. 把一些功能加到界

71、面中的菜單中,有連接服務器,連接視頻,斷開連接,退出等子菜單項。</p><p>  2. 在界面中添加在線用戶列表框,用以顯示在線的用戶。</p><p>  3. 在界面中用一個大的Panel 裝載舉行會議時的各個用戶的視頻框。</p><p>  4. 在界面中添加實現(xiàn)簡單聊天室功能的聊天文本框。</p><p>  5. 在界

72、面底端有一些功能按鈕,如連接視頻,發(fā)送信息等。</p><p><b>  第五章 系統(tǒng)實現(xiàn)</b></p><p>  5.1 系統(tǒng)開發(fā)環(huán)境</p><p>  系統(tǒng):Microsoft Windows XP Professional Service Pack 2</p><p><b>  開發(fā)語言:JAV

73、A</b></p><p>  編程環(huán)境:Eclipse</p><p>  JMF版本:JMF 2.1.1</p><p>  JDK版本:JDK 5.0</p><p>  Eclipse版本:Eclipse 3.2</p><p><b>  5.2 系統(tǒng)實現(xiàn)</b></p

74、><p>  5.2.1 服務器端套接字建立</p><p>  數(shù)據(jù)通訊是雙向的,客戶端通過套接字請求數(shù)據(jù)通訊后,服務器端需要有一個響應客戶端請求通訊的服務程序,該服務器程序應用ServerSocket類完成與客戶端的通訊。</p><p>  ServerSocket類用來監(jiān)聽和響應客戶端的連接請求,并接受客戶端發(fā)送的數(shù)據(jù)信息。ServerSocket類在服務器端等

75、待其他機器同它的連接,一旦客戶端程序建立一個套接字連接,ServerSocket類就會通過accept()方法返回一個對應的服務器端套接字對象,以便進行直接通訊。從兩臺計算機連接成功起,服務器端與客戶端就得到了一個真正的“套接字-套接字”連接,此時利用Socket類中的getInputStream()及getOutputStream()方法從每端的套接字產(chǎn)生對應的InputStream和OutputStream對象,并將套接字數(shù)據(jù)流封裝

76、到緩沖區(qū)內(nèi)以便進行兩臺機器之間的數(shù)據(jù)通訊。</p><p>  serverSocketChannel = ServerSocketChannel.open();//打開連接通道</p><p>  serverSocketChannel.socket().bind(new InetSocketAddress(12345));</p><p>  //綁定IP與端口

77、號</p><p>  getConnection();//接收連接請求</p><p>  charSet = Charset.forName("UTF-8");//開啟服務器套接字通道</p><p>  serverSocketChannel = ServerSocketChannel.open();</p><p>

78、;  serverSocketChannel.socket().bind(newInetSocketAddress(12345)); serverSocketChannel.configureBlocking(false);</p><p>  //設置阻塞模式為非阻塞模式等待一個連接</p><p>  5.2.2 客戶端套接字建立</p><p>  

79、客戶端使用Socket類的方法建立(類似于服務器端),客戶端向套接字對象中的數(shù)據(jù)流輸出和獲取數(shù)據(jù)。客戶端程序試圖與服務器之間在Socket層次上建立一個連接,通過套接字輸入流讀取方法從套接字數(shù)據(jù)流中獲取服務器信息,以及寫入數(shù)據(jù)到套接字輸出流中向服務器發(fā)送信息,并且等待服務器的答復。如果連接成功,則該客戶端程序通過套接字與服務器可以進行正常的數(shù)據(jù)交換。</p><p>  socketChannel = Socke

80、tChannel.open();打開連接通道</p><p>  socketChannel.connect(new InetSocketAddress(InetAddress.getByName</p><p>  (serverAddress),12345));//連接到服務器</p><p>  receiveMessage = new ReceivingTh

81、read();//構(gòu)造接收信息線程</p><p>  receiveMessage.start();//運行線程</p><p>  socketChannel.write(writeBuffer);//往通道里寫入消息</p><p>  socketChannel.read(readBuffer);//讀取通道中消息</p><p> 

82、 5.2.3 視音頻發(fā)送</p><p>  視音頻數(shù)據(jù)以RTP實時流的形式發(fā)送出去,通過會話管理器(Session Manager)傳輸RTP數(shù)據(jù)的步驟為:</p><p>  產(chǎn)生一個JMF處理器(Processor),為每一種RTP格式設置相應的軌跡格式。</p><p>  從處理器獲取輸出數(shù)據(jù)源。</p><p>  會話管理器產(chǎn)生

83、一個發(fā)送數(shù)據(jù)流,即以數(shù)據(jù)源和序號作為參數(shù)調(diào)用會話管理器的createSendStream()方法。</p><p><b>  開始會話傳輸。</b></p><p>  通過監(jiān)聽ControllerEvent事件控制會話的過程。</p><p>  停止會話,刪除會話管理器。</p><p><b>  定義

84、以下內(nèi)容:</b></p><p>  // 媒體定位 IP 端口 處理器 會話管理器 輸出數(shù)據(jù)源</p><p>  private MediaLocator Locator;</p><p>  private String IpAddress;</p><p>  private int portBase;</p

85、><p>  private Processor processor=null;</p><p>  private RTPManger rtpMgrs[];</p><p>  private DataSource dataOutput=null;</p><p><b>  具體實現(xiàn)函數(shù)如下:</b></p>

86、<p><b>  //發(fā)送數(shù)據(jù)函數(shù)</b></p><p>  public RTPTransmit(Processor processor,String ipAddress, String pb){}</p><p>  //為媒體定位器產(chǎn)生一個處理器</p><p>  private String createProces

87、sor(){}</p><p>  // 為處理器的每一個媒體磁道產(chǎn)生一個RTP會話</p><p>  private String createTransmitter() {}</p><p>  // 讓處理器開始傳輸</p><p>  public synchronized String start(){}</p>&

88、lt;p><b>  // 停止傳輸</b></p><p>  public void stop(){}</p><p><b>  //組播線程類</b></p><p>  class CreateJoinMuiltcastThread extends Thread {}</p><p>

89、;  //處理器的狀態(tài)監(jiān)聽器類</p><p>  class StateListener implements ControllerListener {}</p><p>  5.2.4 視音頻接收</p><p>  接收網(wǎng)絡實時媒體數(shù)據(jù)流是通過java.media包中定義的各種RTP事件監(jiān)聽器和RTP事件處理類來處理和控制的,使用java.media包中的Pl

90、ayer類可以實時播放網(wǎng)絡多媒體數(shù)據(jù)流,java.media包中的處理媒體流接收和播放完成了整個接收RTP數(shù)據(jù)的過程。接收部分程序為每一種新接收到的媒體數(shù)據(jù)流產(chǎn)生一個播放器,一邊接收媒體流數(shù)據(jù),一邊將媒體數(shù)據(jù)播放出來,其實現(xiàn)分為以下幾個步驟:</p><p>  1. 實現(xiàn)ReceiveStreamListener監(jiān)聽接口,監(jiān)聽NewReceiveStreamEvent事件。</p><p&g

91、t;  2. 當接收到NewReceiveStreamEvent事件后,通過事件獲取接收媒體數(shù)據(jù)流(ReceiveStream),然后通過接收媒體數(shù)據(jù)流獲取RTP數(shù)據(jù)源(DataSource)。</p><p>  3. 將數(shù)據(jù)源傳給Manager.createPlayer()產(chǎn)生一個播放器。</p><p>  4. 給播放器添加監(jiān)聽器,等到播放器實現(xiàn)后,即可顯示播放數(shù)據(jù)。</p&

92、gt;<p><b>  定義以下內(nèi)容:</b></p><p>  String sessions[] = null; // RTP會話字符串數(shù)組</p><p>  RTPManager mgrs[] = null; // RTP管理器數(shù)組</p><p>  Vector play

93、erPanels = null; // 管理播放器窗口的向量</p><p>  boolean dataReceived = false; // 是否接收到數(shù)據(jù)的標志</p><p>  Object dataSync = new Object(); // 同步對象</p><p><b>  具體實現(xiàn)函數(shù)如下:

94、</b></p><p>  //接收數(shù)據(jù)實現(xiàn)函數(shù)</p><p>  public Receive(String sessions[]) {}</p><p>  //初始化RTP會話,準備接收數(shù)據(jù)</p><p>  protected boolean initialize(){}</p><p>&l

95、t;b>  //關閉播放窗口</b></p><p>  protected void close(){}</p><p>  //判斷數(shù)據(jù)是否接收完成</p><p>  public boolean isDone() {}</p><p>  // 通過播放器查找播放窗口</p><p>  Pl

96、ayerPanel find(Player p) {}</p><p>  // 通過接收數(shù)據(jù)流查找播放窗口</p><p>  PlayerPanel find(ReceiveStream strm) {}</p><p>  //實現(xiàn)ReceiveStreamListener監(jiān)聽接口</p><p>  public synchroniz

97、ed void update( ReceiveStreamEvent evt) {}</p><p>  第六章 性能測試與分析</p><p>  6.1 測試實例(測試集)的研究與選擇</p><p>  測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程。好的測試方案是盡可能發(fā)現(xiàn)尚未發(fā)現(xiàn)的錯誤的測試方案。</p><p>  本節(jié)分別介紹各個功

98、能的測試用例及其預期結(jié)果。</p><p><b>  測試服務器的開啟:</b></p><p>  在搭建好運行環(huán)境后,運行,服務器正常連接。(如有問題時,系統(tǒng)拋出異常,提示開啟失敗對話框)</p><p>  測試用戶連接服務器:</p><p>  在開啟服務器之后,用戶進行連接,由于開始是在寢室連接,速度比較慢

99、,所以連接超時,拋出異常。后又在其他地方連接成功。</p><p><b>  測試舉行會議部分:</b></p><p>  進行視頻連接,連接成功,在視頻會議過程中,視音頻的傳輸都成功。后又請同學用黑盒法進行了測試,曾出現(xiàn)問題,連接中拋出異常,不能正常連接,也有的是視音頻傳輸過程中出現(xiàn)了問題,但大多都是因為人為因素(攝像頭或耳機等出現(xiàn)問題)。</p>

100、<p><b>  測試聊天室部分:</b></p><p>  在連接到服務器后,列表中顯示所有上線的用戶,在文本框中發(fā)送數(shù)據(jù),發(fā)現(xiàn)所有的用戶都能收到,證明沒有問題。</p><p><b>  6.2 性能分析</b></p><p>  1. 系統(tǒng)安全性能分析</p><p>  

101、本系統(tǒng)具有很強安全性,能夠穩(wěn)定運行。在視頻會議系統(tǒng)前端安置加密機或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設備可直接提供加密能力,從而實現(xiàn)用戶的身份驗證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。</p><p>  2. 系統(tǒng)穩(wěn)定性能分析</p><p>  該系統(tǒng)設計的合理性保證了可靠穩(wěn)定的運行,支持當前大多數(shù)硬件平臺,核心線程優(yōu)先保護、數(shù)據(jù)流容錯的設計思路使系統(tǒng)可更加穩(wěn)定的運轉(zhuǎn)。在

102、經(jīng)過大量、多類型復雜組合反復多次測試后,系統(tǒng)始終運行穩(wěn)定,說明系統(tǒng)的穩(wěn)定性具有一定可信度。</p><p>  第七章 課程設計總結(jié)</p><p>  本系統(tǒng)已經(jīng)完成了預期目標,并且在預期目標基礎上有了一定的突破。從系統(tǒng)最初的可行性分析、需求分析、設計,到最后實現(xiàn)的過程中,經(jīng)過多次反復的修改,功能逐漸完善,已經(jīng)基本達到了實用,方便,人性化等預期目標,且能實現(xiàn)多人在線同時舉行會議。<

103、/p><p><b>  7.1 系統(tǒng)總結(jié)</b></p><p>  7.1.1 系統(tǒng)特點介紹</p><p>  1. 較完善的安全性和穩(wěn)定性</p><p>  本系統(tǒng)基于JAVA語言編寫,有強大的錯誤及異常處理功能。支持當前大多數(shù)硬件平臺,核心線程優(yōu)先保護、數(shù)據(jù)流容錯的設計思路使系統(tǒng)可更加穩(wěn)定的運轉(zhuǎn)。在視頻會議系統(tǒng)前

104、端安置加密機或者直接使用加密網(wǎng)卡可以提高在傳輸過程中的安全性。加密設備可直接提供加密能力,從而實現(xiàn)用戶的身份驗證以及未經(jīng)授權(quán)的數(shù)據(jù)訪問和惡意侵犯。</p><p><b>  2.人性化設計</b></p><p>  在考慮了多方面因素,查閱相關資料和試用其他視頻會議系統(tǒng)后,總結(jié)并設計了人性化的界面,方便的菜單選項和按鈕,便捷的視頻及聊天功能,且還可以看到在線參加會

105、議的人員,易于用戶使用。</p><p>  7.1.2 系統(tǒng)存在的問題</p><p>  本系統(tǒng)是點對點的視頻會議系統(tǒng),目前可完全實現(xiàn)多人在線同時舉行會議的功能。測試中是在小范圍的局域網(wǎng)內(nèi)進行的,可能在實際廣域網(wǎng)中測試不會太順利。</p><p>  7.2 系統(tǒng)改進建議或設想</p><p>  在系統(tǒng)改進時,可向一點對多點和多點對多點

106、方面改進。并參考現(xiàn)在流行的一些視頻會議系統(tǒng)進行改進,且做出文件傳輸部分。</p><p>  7.3 課程設計心得體會</p><p>  通過這次課程設計,不僅學到了很多專業(yè)知識,而且提高了動手能力和解決實際問題的能力,受益匪淺。 </p><p>  此系統(tǒng)已經(jīng)實現(xiàn)了點對點視頻連接,以及一些輔助功能,并且經(jīng)過對功能的測試,反映良好。由于使用JAVA作為開發(fā)

107、工具,所以在跨平臺方面的優(yōu)點也非常突出。在本次課程設計中學習了多媒體技術(shù),鞏固了JAVA Socket編程,更有信心進行深層次的學習,并且可以結(jié)合各方面的知識進行多方面的學習,積累更多知識。</p><p><b>  參考文獻</b></p><p>  [1]H.M.Deitel P.J.Deitel,Java 《程序設計教程》 清華大學出版社,2004<

108、/p><p>  [2]彭波 孫一林 《Java多媒體技術(shù)》 清華大學出版社,2004</p><p>  [3]劉成德 李 祥 《基IPMulticast/JMF的多媒體網(wǎng)絡會議系統(tǒng)的設計與實現(xiàn)》</p><p>  [4]Elliotte Rusty Harold 《Java網(wǎng)絡編程》 中國電力出版社,2005</p><p>  [5

溫馨提示

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

評論

0/150

提交評論