![畢業(yè)設計(論文)局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/19/e41bed5d-0bb6-4c2c-b291-04831b244145/e41bed5d-0bb6-4c2c-b291-04831b2441451.gif)
![畢業(yè)設計(論文)局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/19/e41bed5d-0bb6-4c2c-b291-04831b244145/e41bed5d-0bb6-4c2c-b291-04831b2441452.gif)
![畢業(yè)設計(論文)局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/19/e41bed5d-0bb6-4c2c-b291-04831b244145/e41bed5d-0bb6-4c2c-b291-04831b2441453.gif)
![畢業(yè)設計(論文)局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/19/e41bed5d-0bb6-4c2c-b291-04831b244145/e41bed5d-0bb6-4c2c-b291-04831b2441454.gif)
![畢業(yè)設計(論文)局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-6/19/e41bed5d-0bb6-4c2c-b291-04831b244145/e41bed5d-0bb6-4c2c-b291-04831b2441455.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、存檔日期:存檔日期: 存檔編號:存檔編號: 畢業(yè)設計報告 題題 目:目: 局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn) 子子 課課 題:題: 學學 號:號: 姓姓 名:名: 院院 系:系: 專專業(yè)業(yè)、年年級級、班班組組: 指指 導導 教教 師:師: 畢業(yè)設計報告原創(chuàng)性聲明 局域網(wǎng)聊天系統(tǒng)的設計與實現(xiàn) 摘 要:本文介紹了采用 microsoft visual c+ 6.0 編程開發(fā)視頻聊天系統(tǒng)的一套比較 常用的解決方案。文字聊天采用 tcp 模式;語音視頻聊天采用 udp 模式,在客戶端之間 點對點的進行。在該方案中,通過函數(shù)庫 vfw 來實現(xiàn)視頻捕獲、影像壓縮以及影像播放。 微軟公司提供的專門用于視頻捕獲開發(fā)的
2、工具包 vfw(vedio for windows),為在 windows 操作系統(tǒng)中實現(xiàn)視頻捕獲提供了標準的接口,從而大大降低了程序的開發(fā)難度。 在視頻傳輸方面,則通過組建視頻幀,將位圖形式的視頻幀壓縮成幀格式的 mpeg4 流, 傳輸?shù)娇蛻舳撕?,解壓并顯示影像。同時,在本方案中,采用了線程來實現(xiàn)語音錄制和語 音回放,最終實現(xiàn)了通過服務器中轉(zhuǎn)的文字聊天、點對點的語音視頻聊天。 關(guān)鍵詞: 文字聊天;vfw;視頻傳輸;語音回放 design and implementation of lan-based chat room system abstract: as a new tool about
3、 communication, video chatting system has broken through geographical restrictions, has provides more convenient, flexible and complete transmission and service. furthermore, it has a very bright future. the common solution about how to develop a video chatting system is introduced by the microsoft
4、visual c + + 6.0 programming. tcp model is used in the text chatting and udp for the point-to-point video chats between the clients. in this plan, video capture, video compression manager and drawdib are realized by the functions of vfw(vedio for windows) library. the special kit vfw (video for wind
5、ows) in video capture offered by microsoft corporation, has provided a standard interface for video capture in windows operating system and thus greatly reduced the hardship of programming. in video transmission aspect, it requires a video frame which is compressed the video frame of bitmap into mpe
6、g4 steam of frame form. then it will be decompressed into images since it has been arrived the client. meanwhile, the thread is used to achieve audio recording and replaying. finally, it has realized the text chatting through a server to transit, the point-to-point audio and video chats. keywords: t
7、ext chatting; vfw; video transmission; audio playing 目目 錄錄 第第 1 章章 緒論緒論.1 1.1 課題背景及意義 .1 1.2 課題現(xiàn)狀 .1 第第 2 章章 開發(fā)技術(shù)的原理性說明開發(fā)技術(shù)的原理性說明.2 2.1 win32 編程(即 sdk 程序設計原理).2 2.2 mfc (microsoft foundation class).3 2.2.1 簡介.3 2.2.2 mfc 與 c 語言 api 的關(guān)系.3 2.2.3 mfc 類庫.3 2.3 tcp/ip 協(xié)議及 windows sockets 網(wǎng)絡編程接口.4 2.3.1 t
8、cp/ip 協(xié)議簡介.4 2.3.2 windows socket 網(wǎng)絡編程簡介.4 2.4 多線程技術(shù) .4 2.4.1 進程及線程概述.4 2.4.2 mfc 對多線程編程的支持.5 2.5 vfw 簡介.5 2.6 vc+ 6.0 簡介.8 第第 3 章章 需求分析及可行性研究需求分析及可行性研究.9 3.1 系統(tǒng)功能模塊圖.9 3.2 需求分析.9 3.2.1 功能需求分析.9 3.2.2 性能需求分析.10 3.2.3 運行需求分析.11 3.3 可行性研究.11 3.3.1 成本可行性.11 3.3.2 技術(shù)可行性.11 3.4 軟硬件環(huán)境.11 3.5 界面的設計 .11 3.5
9、.1 登陸界面.11 3.5.2 服務端界面設計.12 3.5.3 客戶端界面設計.12 第第 4 章章 詳細設計及編碼實現(xiàn)詳細設計及編碼實現(xiàn).14 4.1 文字聊天 .14 4.1.1 tcp 套接字的運用.14 4.1.2 文字聊天實現(xiàn).14 4.2 語音視頻聊天 .17 4.2.1 udp 套接字的運用.17 4.2.2 視頻的捕捉.18 4.2.4 視頻捕獲驅(qū)動.22 4.2.5 語音錄制.22 4.2.6 語音回放.23 4.2.7 視音頻的傳輸.24 第第 5 章章 測試測試.26 5.1 測試 .26 5.2 測試結(jié)論 .26 第第 6 章章 總結(jié)與展望總結(jié)與展望.27 6.1
10、總結(jié) .27 6.2 展望 .27 畢業(yè)設計體會畢業(yè)設計體會.28 致謝致謝.29 參考文獻參考文獻.30 英文翻譯資料英文翻譯資料.31 第第 1 章章 緒論緒論 1.1 課題背景及意義課題背景及意義 隨著 internet 的不斷發(fā)展普及,網(wǎng)絡通訊成為人們生活中的一部分。網(wǎng)絡聊天已 和手機等一樣,成為人們運用最為廣泛的通信工具之一。 本設計主要目的是為了滿足人們通訊交流的便捷,實現(xiàn)靈活、全面的音、視頻信 息的傳遞和服務。模擬 qq 軟件,開發(fā)一個多功能的聊天系統(tǒng)軟件,本畢業(yè)設計主要實 現(xiàn)語音視頻聊天、文字聊天等功能。 本設計開發(fā)采用 c/s 結(jié)構(gòu),在 vc 開發(fā)環(huán)境下,使用 c+編程語言進
11、行本軟件的開 發(fā)。 在本文中,將討論一種基于 mfc socket 的局域網(wǎng)通信系統(tǒng)的設計與實現(xiàn)方法。 基于 mfc socket 的局域網(wǎng)通信軟件可以為局域網(wǎng)提供一種良好、安全、快速的通 信機制,在局域網(wǎng)內(nèi)部通信、教學、討論等應用中都具有一定的實用價值,它同時很 好地詮釋了 mfc socket 通信的原理。 1.2 課題現(xiàn)狀課題現(xiàn)狀 基于局域網(wǎng)的即時通信工具,實際上是互聯(lián)網(wǎng)即時通信工具的一個小規(guī)模版本, 廣域網(wǎng)上的即時通信工具,如今一般采用 udp 或者 tcp 協(xié)議體系來實現(xiàn),開發(fā)技術(shù) 已經(jīng)比較成熟,比如較早的 icq、msn 、yahoo!通等國外開發(fā)的產(chǎn)品,還有國產(chǎn)的有 名的 qq、
12、百度 hi!,中國移動通信 fetion 等,這些工具統(tǒng)統(tǒng)都實現(xiàn)了廣域網(wǎng)上的即時 通信。 所有上述軟件都實現(xiàn)了網(wǎng)絡即時的文字,視頻語音聊天功能。這些軟件,在使用 方面各有特色,在實現(xiàn)方面也各有所長,但由于這些產(chǎn)品正在商業(yè)運營階段,其實現(xiàn) 方式屬于商業(yè)機密,具體細節(jié)不可能得知,但是它在大的方面無非就是各種利用各種 平臺上的網(wǎng)絡通信接口,建構(gòu)基于下層 tcp/ip,或者 udp/ip 協(xié)議的軟件產(chǎn)品。 在局域網(wǎng)內(nèi),這些功能的實現(xiàn)跟廣域網(wǎng)相比更加簡單,因為局域網(wǎng)的網(wǎng)絡結(jié)構(gòu)本 身比廣域網(wǎng)要簡單,但是可以借此理解網(wǎng)絡協(xié)議,以及網(wǎng)絡通信工具的實現(xiàn)原理,所 以仍然極具研究價值。 第第 2 章章 開發(fā)技術(shù)的原
13、理性說明開發(fā)技術(shù)的原理性說明 2.1 win32 編程(即編程(即 sdk 程序設計原理)程序設計原理) 所謂的 win32 開發(fā),就是在 c+語言的層面上,直接使用 win32 api(applicatio n programming interface:系統(tǒng)開放出來,給程序員使用的接口。 )開發(fā) windows 應 用程序或者系統(tǒng)程序。雖然現(xiàn)在直接用 win32 api 開發(fā)應用程序的人已經(jīng)不多了,但 是深入理解 windows 系統(tǒng)程序設計原理,仍然是成為 windows 開發(fā)高手的良好途徑。 所謂的 win32,其實是一個 api 規(guī)范,與 unix 系統(tǒng)編程接口標準 posix 是相
14、對應 的。下面是進行直接的 win32 sdk 方式編程的基本思路或者說是一個框架。 一個 windows 程序分為程序代碼和 ui(user interface 用戶界面)資源兩大部分, 兩部分最后以 rc 編譯程序編譯為一個完整的 exe 文件。 所謂 ui 資源是指功能菜單、對話框外貌、程序圖標、光標形狀等等。這些 ui 資源 的實際內(nèi)容(二進制代碼)系借助各種工具產(chǎn)生,并以各種擴展名存在,如 .ico .bm p .cur 等等。程序員必須在一個所謂的資源描述檔(.rc )中描述它們。rc 編譯器( rc.exe )讀取 rc 文件的描述后將所有 ui 資源文件集中制作出一個.res
15、資源文件, 再與程序代碼結(jié)合在一起,這才是一個完整的 windows 可執(zhí)行文件。 1.winmain 函數(shù) main()函數(shù)是 c+程序的進入點,而 winmain 函數(shù)則是 windows 程序的進入點。 2. msg 結(jié)構(gòu)體 定義了一個 msg 結(jié)構(gòu)體,是 windows 內(nèi)設的一種數(shù)據(jù)格式, 在 windows 程序中, 消息是由 msg 結(jié)構(gòu)體來表示的。 3. 注冊窗口 registerclass()完成注冊窗口類的功能,設定窗口的屬性:邊框、顏色、標題、 位置等等。 4. 創(chuàng)建窗口 createwindow 函數(shù)可以用于創(chuàng)建父窗口、彈出窗口以及子窗口,在創(chuàng)建窗口時它 可以確定窗口類
16、、窗口標題、窗口風格、大小以及初始化位置。 5. 顯示窗口 創(chuàng)建窗口后需要使用 showwindow 函數(shù)用于顯示窗口。 6、刷新窗口 調(diào)用 updatewindow 函數(shù)來刷新窗口。 7. 消息循環(huán) 初始化工作完成后,winmain 進入所謂的消息循環(huán),使用 while 循環(huán),不斷的 get message,再使用 translatemessage 將消息轉(zhuǎn)化,用 dispatchmessage 將消息傳遞給 窗口函數(shù)去處理。 8. 獲取消息 getmessage 功能函數(shù)從消息隊列中獲取消息,如果消息隊列中沒有消息,此功能 函數(shù)則會一直等得消息。 9. 轉(zhuǎn)換消息 將特定的消息轉(zhuǎn)換為不同的消
17、息,例如消息隊列中同時有 wm_keydown 和 wm_keyup 消息時,意味著用戶同時按下了鍵盤上的某幾個鍵,此時 translatemessage 將其轉(zhuǎn)換為 一個 wm_char 消息。 10. 將消息發(fā)送到回調(diào)函數(shù) dispatchmessage 通過 user 模塊的協(xié)助將消息送到該窗口的窗口函數(shù)去了,但是 dispatchmessage 并沒有指定函數(shù)名,卻可以將消息傳送過去,這是因為消息發(fā)生的時 候,os 已經(jīng)根據(jù)當時狀態(tài),為它標明了所屬窗口,而窗口所屬的窗口類亦是明確的。 11. winmain 函數(shù)返回值 return msg.wparam;/返回結(jié)構(gòu)體變量 msg 中的
18、 wparam 的值。 12. windowproc 窗口函數(shù) 窗口中的生命樞紐:窗口函數(shù) windowproc。windowproc 是一個 callback 函數(shù), 常利用 switch/case 方式判斷消息的種類,以決定處理方式。 2.2 mfc (microsoft foundation class) 2.2.1 簡介簡介 mfc 是在 1992 年隨微軟的 microsoft c/c+ 7.0 編譯器發(fā)布的,是建立在 windows api 之上的 c+ 類庫(c+ class library) ,意圖是使 windows 程序設計過程更有效 率,更符合面向?qū)ο蟮木瘛,F(xiàn)在 mfc
19、 已經(jīng)成為了 windows 環(huán)境上標準的 c+ api。 mfc 使得開發(fā) windows 應用程序變得簡單容易,將很多應用程序開發(fā)中常用的功能自動 化,并且提供了文檔框架視圖結(jié)構(gòu)和活動文檔這樣的便于自定義的應用程序框架。同 時,在 visual c+內(nèi)部也內(nèi)建了很多對 mfc 的非常實用的東西,例如類向?qū)н@樣的支 持,減少軟件開發(fā)的時間,使用類向?qū)Э梢陨蓮?hello world 這樣的簡單程序到活 動文檔服務器這樣的復雜程序。mfc 的消息映射機制也避免了使用性能較低的龐大虛函 數(shù)表。mfc 在整個 windows 家族中都是兼容的。1 2.2.2 mfc 與與 c 語言語言 api
20、的關(guān)系的關(guān)系 設置 microsoft 基本類庫與其它 windows 類庫所不同的唯一特征就是它與 c 語言 編寫的 windows api 的緊密的映射關(guān)系。而且,可以將直接調(diào)用 windows api 與調(diào)用 類庫自由地混合起來使用。這種直接訪問并不意味著類可以完全取代 api。開發(fā)者有時 必須直接調(diào)用一些 windows 函數(shù),例如,setcursor 和 getsystemmetrics。只有在有 明顯優(yōu)勢時,一個 windows 函數(shù)才被一個類成員函數(shù)所替代。 2.2.3 mfc 類庫類庫 mfc 類庫是一個很大的、擴展了的 c+類層次結(jié)構(gòu),與傳統(tǒng)上使用 c 語言直接訪問 wind
21、ows api 相反,mfc 已經(jīng)包含和壓縮了所有標準的“樣板文件”代碼,這些代碼是 所有用 c 編寫的 windows 程序所必需的,因此用 mfc 編寫的程序要比用 c 語言編寫 的程序小得多,當然 mfc 所編寫的程序的性能也毫無損失。必要時,也可以 mfc 可以 用面向?qū)ο蟮姆椒▉碚{(diào)用 windows api,因為 mfc 不修改也不隱藏 windows 程序的基 本結(jié)構(gòu)。mfc 是很龐大的。例如,版本 4.0 中包含了大約 200 個不同的類。事實上, 你可能只需要使用其中的十多個不同的類,就可以建立一個非常漂亮的程序。 mfc 層次結(jié)構(gòu)大約可分為幾種不同的類型的類: 1. 根類:c
22、object microsoft 基本類庫中的大多數(shù)類都是由在類層次表中根上的唯一的一個基類派 生而來的。 2. mfc 應用結(jié)構(gòu)類 mfc 應用構(gòu)造類有助于一個框架應用的構(gòu)造。它們對大多數(shù)應用提供了通用功能 ??梢栽诳蚣苤刑顚憣τ趹锰囟ǖ墓δ?。 3. 窗口、對話和控件類 類 cwnd 和它的派生類封裝了 hwnd,它是一個 windows 窗口。cwnd 可被自己使用 ,也可以作為派生新類的基類。類庫提供的派生類表示各種窗口。 cwnd 是所有窗口的基類。可以使用 cwnd 派生出來的一個類,也可以從其中派生出 自己的類。 4. 繪畫和打印類 在 windows 中,所有的圖形輸出都是在一
23、個可視的繪圖區(qū)上。這叫作一個設備上 下文(或 dc) 。mfc 提供了封裝不同 dc 類型的類,也提供了對 windows 繪圖工具,例 如位圖、刷子、調(diào)色板和筆的封裝。 5. 文件和數(shù)據(jù)庫類 這些類允許將信息存儲在一個數(shù)據(jù)庫或一個磁盤文件中。有兩個數(shù)據(jù)庫類的集合 dao 和 odbc它們提供了相似的功能。 6. internet 和網(wǎng)絡類 這些類允許和其它使用 isapi 的計算機或一個 windows socket 交換信息。還有創(chuàng) 建 isapi 擴展 dll 的類的集合和操作 windows 套接字的類的集合。 支持連接的類的分類:isapi 類、windows 套接字類、win32
24、internet 類。 7. 其它還有簡單的數(shù)據(jù)類型類、ole 類、調(diào)試和異常類、數(shù)組列表和映射類。 2.3 tcp/ip 協(xié)議及協(xié)議及 windows sockets 網(wǎng)絡編程接口網(wǎng)絡編程接口 2.3.1 tcp/ip 協(xié)議簡介協(xié)議簡介 通常包含了一系列與“tcp(傳輸控制協(xié)議) ”和“ip(網(wǎng)際協(xié)議) ”有聯(lián)系的網(wǎng)絡 協(xié)議,它包括其它的協(xié)議,應用軟件,甚至網(wǎng)絡媒介。這些協(xié)議的示例是:udp(user datagram protocol)協(xié)議、icmp(internet control message protocol)協(xié)議、arp (地址解析協(xié)議)和其他一些協(xié)議的協(xié)議組。應用的示例:tel
25、net(遠程登錄)、ftp( 文件傳遞協(xié)議)、http 等。這其中一些協(xié)議最早發(fā)源于美國國防部的 arpa 網(wǎng)項目。2 2.3.2 windows socket 網(wǎng)絡編程簡介網(wǎng)絡編程簡介 socket 實際在計算機中提供了一個通信端口,可以通過這個端口與任何一個具有 socket 接口的計算機通信。應用程序在網(wǎng)絡上傳輸,接收的信息都通過這個 socket 接 口來實現(xiàn)。 windows sockets 規(guī)范定義了一套開放的、支持多種協(xié)議的、 windows 下的網(wǎng)絡 編程接口。它不僅包含了人們所熟悉的 berkeley socket 風格的庫函數(shù),也包含了一 組針對 windows 的擴展庫函
26、數(shù),使得程序員能充分地利用 windows 消息驅(qū)動機制進行 編程。 現(xiàn)在的 windows sockets 已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān),你可以使用 windows sockets 來調(diào)用多種協(xié)議的功能,但較常使用的是 tcp/ip 協(xié)議。3 2.4 多線程技術(shù)多線程技術(shù) 2.4.1 進程及線程概述進程及線程概述 進程和線程都是操作系統(tǒng)的概念。每個進程是由一個或多個線程、私有的虛擬地址 空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進程在運行過程中創(chuàng)建的資源隨著進程 的終止而被銷毀,所使用的系統(tǒng)資源在進程終止時被釋放或關(guān)閉。進程是應用程序的 執(zhí)行實例。 線程是進程內(nèi)的執(zhí)行路徑,也是 win32 安排
27、的最小執(zhí)行單元。線程包括堆棧、cpu 寄存器的狀態(tài)和系統(tǒng)計劃程序執(zhí)行列表中的項。每一個進程至少有一個主執(zhí)行線程, 它無需由用戶去主動創(chuàng)建,是由系統(tǒng)自動創(chuàng)建的,此線程終止時,進程也終止。用戶 可以根據(jù)需要在應用程序中創(chuàng)建其它線程,多個線程并發(fā)地運行于同一個進程中,所 有線程都在該進程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng) 資源,但是必須使用信號燈或其他進程間的通信方法協(xié)調(diào)它們的工作。一般情況下進 程中的每個線程都獨立運行的,對進程中的其他線程一無所知,除非使這些線程相互 可見。 多線程可以實現(xiàn)并行處理,避免了某項任務長時間占用 cpu 時間。要說明的一點是 ,目前大多數(shù)的計算
28、機都是單處理器(cpu)的,為了運行所有這些線程,操作系統(tǒng)為 每個獨立線程安排一些 cpu 時間,操作系統(tǒng)以輪換方式向線程提供時間片,這就給人 一種假象,好象這些線程都在同時運行。由此可見,如果兩個非?;钴S的線程為了搶 奪對 cpu 的控制權(quán),在線程切換時會消耗很多的 cpu 資源,反而會降低系統(tǒng)的性能。 這一點在多線程編程時應該注意。 2.4.2 mfc 對多線程編程的支持對多線程編程的支持 win32 sdk 函數(shù)支持進行多線程的程序設計,并提供了操作系統(tǒng)原理中的各種同步 、互斥和臨界區(qū)等操作。visual c+ 6.0 中,使用 mfc 類庫也實現(xiàn)了多線程的程序設 計,使得多線程編程更加
29、方便。 cwinthread 對象代表在一個應用程序內(nèi)運行的線程。運行的主線程通常由 cwinapp 的派生類提供;cwinapp 由 cwinthread 派生。另外,cwinthread 對象允許一給定的應 用程序擁有多個線程。 cwinthread 支持兩種線程類型:工作者線程和用戶界面線程。工作者線程沒有收 發(fā)消息的功能:例如,在電子表格應用程序中進行后臺計算的線程。用戶界面線程具 有收發(fā)消息的功能,并處理從系統(tǒng)收到的消息。cwinapp 及其派生類是用戶界面線程的 例子。其它用戶界面線程也可由 cwinthread 直接派生。cwinthread 類的對象存在于 線程的生存期。如果你
30、希望改變這個特性,將 m_bautodelete 設為 false。 要使你的代碼和 mfc 是完全線程安全的,cwinthread 類是完全必要的??蚣苁褂?的用來維護與線程相關(guān)的信息的線程局部數(shù)據(jù)由 cwinthread 對象管理。由于依賴 cwinthread 來處理線程局部數(shù)據(jù),任何使用 mfc 的線程必須由 mfc 創(chuàng)建。例如,由運 行時函數(shù)_beginthreadex 創(chuàng)建的線程不能使用任何 mfc api。為了創(chuàng)建一個線程,調(diào) 用 afxbeginthread 函數(shù)。 根據(jù)你需要工作者線程還是用戶界面線程,有兩種調(diào)用 afxbeginthread 的格式。 如果你需要用戶界面線程
31、,則將指向你的 cwinthread 派生類的 cruntimeclass 的指針 傳遞給 afxbeginthread。如果你需要創(chuàng)建工作者線程,則將指向控制函數(shù)的指針和控 制函數(shù)的參數(shù)傳遞給 afxbeginthread。對于工作者線程和用戶界面線程,你可以指定 可選的參數(shù)來修改優(yōu)先級, 堆棧大小, 創(chuàng)建標志和安全屬性。afxbeginthread 線程 將返回指向新的 cwinthread 對象的指針。 與調(diào)用 afxbeginthread 相反,你可以構(gòu)造一個 cwinthread 派生類的對象,然后調(diào) 用 createthread。如果你需要在連續(xù)創(chuàng)建和終止線程的執(zhí)行之間重復使用 c
32、winthread 對象,這種兩步構(gòu)造方法非常有用。 創(chuàng)建線程也可以使用 api 函數(shù):createthread 函數(shù)完成。其它還有掛起線程、結(jié) 束線程等函數(shù),將不再一一詳解。 2.5 vfw 簡介簡介 vfw 是 microsoft 1992 年推出的關(guān)于數(shù)字視頻的一個軟件包,它能使應用程序數(shù) 字化并播放從傳統(tǒng)模擬視頻源得到的視頻剪輯。4 vfw 的一個關(guān)鍵思想是播放時不需要專用硬件。為了解決數(shù)字視頻數(shù)據(jù)量大的問題 ,需要對數(shù)據(jù)進行壓縮。它引進了一種叫 avi 的文件標準,該標準未規(guī)定如何對視頻 進行捕獲、壓縮及播放,僅規(guī)定視頻和音頻該如何存儲在硬盤上,以及在 avi 文件中 交替存儲視頻幀
33、和與之相匹配的音頻數(shù)據(jù)。 vfw 給程序員提供 vbx 和 avicap 窗口類的高級編程工具,使程序員能通過發(fā)送消 息或設置屬性來捕獲、播放和編輯視頻剪輯。用戶不必專門安裝 vfw,在安裝 windows 時,安裝程序會自動地安裝配置視頻所需的組件,如設備驅(qū)動程序、視頻壓縮程序等 。 vfw 主要由以下六個模塊組成: 1. avicap.dll:包含了執(zhí)行視頻捕獲的函數(shù),它給 avi 文件、i/o 和視頻音頻設 備驅(qū)動程序提供一個高級接口; 2. msvideo.dll:用一套特殊的 drawdib 函數(shù)來處理屏幕上的視頻操作; 3. mciavi.drv:此驅(qū)動程序包括對 vfw 的 mc
34、i 命令的解釋器; 4. avifile.dll:支持由標準多媒體 i/o(mmio)函數(shù)提供的更高的命令來訪問 avi 文件; 5. 壓縮管理器(icm):管理用于視頻壓縮/解壓縮的編解碼器(codec); 6. 音頻壓縮管理器 acm:提供與 icm 相似的服務,不同的是它適于波形音頻。 visual c+在支持 vfw 方面提供有 vfw32.lib、msacm32.lib、winmm.lib 等庫。特 別是它提供了功能強大、簡單易行、類似于 mciwnd 的窗口類 avicap。avicap 為應用 程序提供了一個簡單的、基于消息的接口,使之能訪問視頻和波形音頻硬件,并能在 將視頻流捕
35、獲到硬盤上的過程中進行控制。 avicap 支持實時的視頻流捕獲和單幀捕獲,并提供對視頻源的控制。雖然 mci 也 提供數(shù)字視頻服務,比如,它為顯示 avi 文件的視頻提供了 avivideo 命令集,為視頻 疊加提供了 overlay 命令集,但這些命令主要是基于文件的操作,不能滿足實時地直 接從視頻緩存中獲取數(shù)據(jù)的要求。對于使用沒有視頻疊加能力的捕獲卡的 pc 機來說, 用 mci 提供的命令集是無法捕獲視頻流的。而 avicap 在捕獲視頻方面具有一定的優(yōu)勢 ,它能直接訪問視頻緩沖區(qū),不需要生成中間文件,實時性很強,效率很高。同時, 它也可將數(shù)字視頻捕獲到文件。 在視頻捕獲之前需要創(chuàng)建一
36、個捕獲窗,所有的捕獲操作及其設置都以它為基礎。用 avicap 窗口類創(chuàng)建的窗口(通過 capcreatecapturewindow 函數(shù)創(chuàng)建)被稱為“捕獲窗 ”,其窗口風格一般為 ws_child 和 ws_visible。實際上,捕獲窗類似于標準控制(如 按鈕、列表框等)。捕獲窗具有下列功能: 1. 將視頻流和音頻流捕獲到一個 avi 文件中; 2. 動態(tài)地同視頻和音頻輸入器件連接或斷開; 3. 以 overlay 或 preview 模式對輸入的視頻流進行實時顯示; 4. 在捕獲時可指定所用的文件名并能將捕獲文件的內(nèi)容拷貝到另一個文件; 5. 設置捕獲速率; 6. 顯示控制視頻源、視頻格
37、式、視頻壓縮的對話框; 7. 創(chuàng)建、保存或載入調(diào)色板; 8. 將圖像和相關(guān)的調(diào)色板拷貝到剪貼板; 9. 將捕獲的一個單幀圖像保存為 dib 格式的文件。 avicap 在顯示視頻時提供的兩種模式: 1. 預覽(preview)模式:該模式使用 cpu 資源,視頻幀先從捕獲硬件傳到系統(tǒng)內(nèi) 存,接著采用 gdi 函數(shù)在捕獲窗中顯示。在物理上,這種模式需要通過 vga 卡在監(jiān)視 器上顯示。 2. 疊加(overlay)模式:該模式使用硬件疊加進行視頻顯示,疊加視頻的顯示不 經(jīng)過 vga 卡,疊加視頻的硬件將 vga 的輸出信號與其自身的輸出信號合并,形成組合 信號顯示在計算機的監(jiān)視器上。只有部分視頻
38、捕獲卡才具有視頻疊加能力。 靈活編寫 avicap 提供的回調(diào)函數(shù)還可滿足一些特殊需求。比如,將宏 capcapture sequencenofile 同用 capsetcallbackonvideostream 登記的回調(diào)函數(shù)一起使用,可使 應用程序直接使用視頻和音頻數(shù)據(jù)。在視頻聊天的應用程序中可利用這一點來獲得視 頻幀,回調(diào)函數(shù)將捕獲的圖像傳到遠端的計算機。應用程序可用捕獲窗來登記回調(diào)函 數(shù)(由用戶編寫,而由系統(tǒng)調(diào)用),以便在發(fā)生下列情況時,它能通知應用程序,作 出相應的反應:捕獲窗狀態(tài)改變;出錯;視頻幀和音頻緩存可以使用;在捕獲過程中 ,其它應用程序處于讓步(yield)地位。 視頻捕獲
39、編程也要用到涉及視頻捕獲的結(jié)構(gòu)、宏、消息和函數(shù)。令人高興的是,發(fā) 送 avicap 窗口消息所能完成的功能都能調(diào)用相應的宏來完成。例如,sendmessag(hw ndcap,wm_cap_driver_connect,0,0l)與 capdriverconnect(hwndcap,0)的作用相同 ,都是將創(chuàng)建的捕獲窗同視頻輸入器件連接起來。 視頻部分主要是利用 video capture 函數(shù)庫來獲取影像的。video capture 主要提 供下列功能:連接驅(qū)動程序;獲取影像、聲音資料,并顯示在屏幕上或者是存成 avi 文件;獲取單張影像顯示在屏幕上,拷貝至剪貼簿,或者是存成 dib(de
40、vice-indepen dent bitmap)文件。 video capture 的主要結(jié)構(gòu): 結(jié)構(gòu)體 captureparams 主要包含一些獲取圖像的參數(shù):dword dwrequestmicrosecp erframe 代表相鄰兩個 frame 的獲取時間間隔;bool fyield 值為 true,則表示 windo ws 會以另一個 thread 來捕獲影像,值為 false,程序會在捕捉影像后顯示忙碌狀態(tài); bool fcaptureaudio 其值表示是否需要同時獲取聲音資料。 結(jié)構(gòu)體 bitmapinfo 和點陣圖有關(guān),主要定義了影像獲取之后顯示在屏幕上、存儲 在文件中的格
41、式,它包含兩個成員:bitmapinfoheader bmiheader 描述影像性質(zhì)的結(jié) 構(gòu),其成員記載了影像的大小、顏色深度和壓縮的方式,該成員在 video capture、vi deo compression manager 和 drawdib 函數(shù)庫中,以及有關(guān)于點陣圖的應用中;rgbqua d bmicolors 指向 color table 第一個元素的位置。 結(jié)構(gòu)體 compvars 主要是記錄所有和壓縮相關(guān)的信息,重要的成員:dword fcchand ler 為 compressor 句柄;lpbitmapinfo lpbiin 指向待壓縮影像 bitmapinfo 的指標
42、; lpbitmapinfo lpbitout:指向壓縮完影像 bitmapinfo 的指標;long lkey 代表 key-fr ame rate,而所謂 key frame 是指此 frame 在解壓縮時不需要依賴前面的 frame;long lq 代表影像壓縮后的品質(zhì),取值為 110000 的整數(shù)。 video compression functions 主要記錄壓縮功能相關(guān)的信息,其包含的比較重要 的成員:iclocate 輸入指向壓縮前后 bitmapinfo 的指標,以及欲使用的 codecs;icc ompressorchoose 呼叫一個系統(tǒng)內(nèi)建的對話,其中包含所有可能使用的
43、 codes 以及其相 關(guān)參數(shù);iccompressquery 詢問 compressor 是否支持某種壓縮方式,輸入?yún)?shù)為 comp ressor handle 及指向壓縮前后 bitmapinfo 的指標,此函數(shù)會傳回詢問結(jié)果;iccompr essbegin 要求系統(tǒng)準備相關(guān)資源以供壓縮之用;iccompress 壓縮某個 frame;iccompr essend 歸還相關(guān)資源給系統(tǒng);icdompressquery 詢問 decompressor 是否支持某種解壓 縮方式;icdompressbegin 要求系統(tǒng)準備相關(guān)資源以供解壓縮之用;icdompress 解壓 縮某一個 frame
44、;icdompressend 歸還相關(guān)資源給系統(tǒng);icdompressfree 歸還 compvar s 所占用的資源。 2.6 vc+ 6.0 簡介簡介 我們通常所說的 visual c+實際上是一個完善的、非常強大的 c+程序開發(fā)環(huán)境, 它的名字是 microsoft developer studio 。二者之間的細小差別并不重要,通常這 兩個術(shù)語可以互換。但如果你不圍繞 developer studio 來進行學習,就不能有效地使 用 visual c+(developer studio 聽起來很像 visual studio , 但它們之間沒有關(guān) 系)。它包含:c+編譯器、調(diào)試器、應用
45、程序框架生成器、項目管理器、設計和實現(xiàn) 菜單等資源的編輯器等等。 第第 3 章章 需求分析及可行性研究需求分析及可行性研究 3.1 系統(tǒng)功能模塊圖系統(tǒng)功能模塊圖 基基于于局局域域網(wǎng)網(wǎng)的的視視頻頻 聊聊天天室室系系統(tǒng)統(tǒng) 語語音音視視頻頻聊聊天天 視視頻頻捕捕獲獲 視視頻頻壓壓縮縮、 解解壓壓縮縮 視視頻頻傳傳輸輸服服務務器器中中轉(zhuǎn)轉(zhuǎn)語語音音錄錄制制語語音音回回放放 文文字字聊聊天天 圖 3.1 系統(tǒng)功能模塊圖 3.2 需求分析需求分析 3.2.1 功能需求分析功能需求分析 1. 文字聊天 文字聊天采用的是 tcp 模式,包括服務器端(server)和客戶端(client)。 首先啟動服務器端,客
46、戶端通過用戶名和密碼登錄服務器,服務器響應客戶端登 錄并提示有用戶登錄,此時兩個用戶就可以進行文字聊天,在文字聊天時信息通過服 務器中轉(zhuǎn),而每個用戶可以同時與多個用戶進行文字聊天。當有用戶退出時,服務器 做出響應,提示在線用戶,用戶下線。文字聊天流程圖如圖 3.2。 c ch ha at ts se er rv ve er rc ch ha at tc cl li ie en nt t 創(chuàng)創(chuàng)建建子子套套接接 字字 客客戶戶端端用用戶戶 等等待待客客戶戶端端 登登陸陸 m me es ss sa ag ge e 啟啟動動 登登陸陸成成功功 ? 登登陸陸 m me es ss sa ag ge e
47、 y y n n 發(fā)發(fā)送送i ip p和和i id d 找找到到客客戶戶端端并并顯顯示示 連連接接上上 顯顯示示 圖 3.2 文字聊天流程圖 2. 語音視頻聊天 語音視頻聊天時采用的是 udp 模式,客戶端與客戶端點對點的進行,不需要經(jīng)過 服務器端中轉(zhuǎn)。 在文字聊天的基礎上,客戶端之間自行處理的語音視頻聊天,運用 vfw 函數(shù)庫中 的函數(shù)對 usb 口輸入的數(shù)字視頻信息進行相關(guān)處理,比如:視頻捕獲、影像壓縮以及影 像播放等,同時利用線程來處理聲音部分的錄制、回放等。 a 客戶端向 b 客戶端請求語音視頻聊天是通過 b 客戶端的用戶名來獲得 b 客戶端的 ip 地址,并向 b 客戶端發(fā)送語音視頻
48、聊天請求,當 b 客戶端接受后捕獲視頻,并進行 壓縮傳輸?shù)?a 客戶端解壓并進行播放,在 b 客戶端接受視頻的同時,a 客戶端也捕獲視 頻,壓縮傳輸?shù)?b 客戶端解壓并進行顯示。語音視頻聊天流程圖如圖 3.3。 顯示視頻 語音回放 發(fā)送視頻 幀、語音 視、音頻的 壓縮 捕獲視頻、 語音錄制 接收語音、 視頻幀 視、音頻的 解壓 接受? 開始 退出 收到語音視頻請求 n n y y y y 圖 3.3 語音視頻聊天流程圖 3.2.2 性能需求分析性能需求分析 1. 可靠性高 能在由于系統(tǒng)問題或其它原因產(chǎn)生錯誤后,作出相對應處理,比如網(wǎng)絡初始化失 敗、服務器不在線等,可以提示用戶安全退出本程序,在
49、出現(xiàn)不可知的錯誤以后,可 以盡量安全的退出程序。 在程序的設計過程中,要求能盡可能多的設想到用戶使用過程中可能發(fā)生的事件 ,并能在判斷事件后做出相應的處理,使程序具有較高的容錯性能。 2. 宜操作性,程序簡單易懂,用戶能很容易看懂并使用。 3.2.3 運行需求分析運行需求分析 1. 用戶界面 程序較小,啟動速度快。 啟動后的應用界面要清爽,設計要簡單明了,具有較高的易用性。 2. 故障處理 在遇到可預知的故障與情況時,能提示用戶并自動退出。在遇到不可預知的故障 時能安全退出。 3.3 可行性研究可行性研究 3.3.1 成本可行性成本可行性 學習研究性開發(fā),暫不考慮成本。 3.3.2 技術(shù)可行性
50、技術(shù)可行性 已有搭建好的基于 windows 的軟硬件平臺,本人對 vc 開發(fā)環(huán)境有一定的了解,需 繼續(xù)深入學習 vc 和 windows socket 編程。 3.4 軟硬件環(huán)境軟硬件環(huán)境 硬件環(huán)境: 計算機兩臺,如下: cpu:intel pentium或者 pentium4 1ghz 內(nèi)存:256mb 以上 硬盤:20gb 以上 其它:分別配有攝像頭、麥克風、音響或者耳機等外部設備 軟件環(huán)境: windows xp 操作系統(tǒng) microsoft visual stdio 6.0 3.5 界面的設計界面的設計 3.5.1 登陸界面登陸界面 圖 3.4 服務器登錄界面 圖 3.5 客戶端登錄
51、界面 3.5.2 服務器端界面設計服務器端界面設計 圖 3.6 服務器端界面設計 3.5.3 客戶端界面設計客戶端界面設計 圖 3.7 客戶端界面設計 第第 4 章章 詳細設計及編碼實現(xiàn)詳細設計及編碼實現(xiàn) 4.1 文字聊天文字聊天 4.1.1 tcptcp 套接字的運用套接字的運用 在文字聊天時,服務器端與客戶端的連接是采用的 tcp 套接節(jié)進行連接。tcp 套接 字的使用如圖 4.1。創(chuàng)建 csocket 對象 csocketserver 來處理服務器端與客戶端的連接 ,csocket 繼承于 casyncsocket,是 windows socket api 的高層抽象。 csocket
52、通常和 csocketfile 以及 carchive 類混合使用,這兩個類負責數(shù)據(jù)的發(fā) 送和接收。要使用 csocket 對象,首先要調(diào)用構(gòu)造函數(shù),然后調(diào)用 create 函數(shù)創(chuàng)建一 個 socket 句柄。csocket 函數(shù)缺省是創(chuàng)建一個流 socket;如果沒有使用 carchive 類 ,那么還可以創(chuàng)建一個數(shù)據(jù)報 socket。服務器端調(diào)用 accept,客戶端調(diào)用 connect, 然后創(chuàng)建一個 csocketfile 去關(guān)聯(lián) csocket。接下來的操作可以創(chuàng)建 carchive 對象關(guān) 聯(lián) csocketfile,以用來發(fā)送和接收數(shù)據(jù)。 tcp 服務器 socket() wri
53、te() read() accept() listen() bind() read() socket() read() write() connect() close() tcp客戶 close() 阻塞直到接受 到客戶連接請求 處理服務請求 數(shù)據(jù)(請求) 數(shù)據(jù)(響應) 結(jié)束連接 協(xié)調(diào)連接 圖 4.1 tcp 套接字的使用 4.1.2 文字聊天實現(xiàn)文字聊天實現(xiàn) chatserver 服務器運行時,利用一個 csocket 對象 csocketserver 啟動服務器, 用函數(shù) gethostname 來獲得服務器端主機名和 ip,同時在服務器對話框中顯示服務器 ip,并將分配的固定端口號 81
54、23 顯示在對話框中。用一個 list 列表顯示在線用戶, 隨時更新用戶登錄情況,用一個 edit box 顯示客戶端的聊天內(nèi)容以及系統(tǒng)提示消息。 每一個 chatclient 客戶端啟動時,利用服務器內(nèi)定的用戶號和密碼來登錄(如圖 4.2) 。在整個系統(tǒng)中,利用鏈表來處理所有的用戶信息:當有用戶登錄時,在鏈表尾部加 入該用戶信息;當用戶下線時,在該鏈表中刪除用戶,并提示所有用戶,該用戶下線 。在對鏈表進行操作的同時,要更新 list 列表中的信息。 圖 4.2 用戶登錄界面 chatserver 服務器端響應客戶端文字聊天時的中轉(zhuǎn)情況如圖 4.3。 圖 4.3 服務器響應文字聊天信息中轉(zhuǎn) c
55、hatclient 客戶端兩兩間進行文字聊天時,發(fā)送信息的處理函數(shù)如下: void cchatclientdlg:onchatbtsend() /發(fā)送信息按鍵 if( !m_bconnect) setmessagebox(請連接服務器!rn); return ; cstring str; cstring szusername; cmesg msg; getdlgitemtext(idc_message,str); getdlgitemtext(idc_username,szusername); if( str.getlength() = 0 ) setmessagebox(請輸入想要發(fā)送的信息
56、!rn); return ; if ( szusername.getlength() sendm( addreceiver(szusername , true); addchatmessage(str); 在聊天兩個客戶端的信息情況如圖 4.4 和圖 4.5。 圖 4.4 接收文字信息 圖 4.5 發(fā)送文字信息 4.2 語音視頻聊天語音視頻聊天 4.2.1 udp 套接字的運用套接字的運用 在實現(xiàn)語音視頻聊天時,采用的是基于 udp 套接字的點對點模式,而 udp 面向的是 無連接的數(shù)據(jù)服務,其套接字的使用如下圖 4.6 所示。 udp服務器端 socket() recvfrom() bind
57、() sendto() socket() close() udp客戶端 close() sendto() recvfrom() 阻塞直到接收到 客戶信息 數(shù)據(jù)(響應) 數(shù)據(jù)(請求) 處理客戶信息 圖 4.6 udp 套接字的使用 4.2.2 視頻的捕捉視頻的捕捉 利用 vfw 接口,視頻捕獲可以分為以下幾個步驟: 1. 建立視頻采集窗口:該窗口用來接收視頻捕捉驅(qū)動程序傳來的數(shù)據(jù)和消息。 2. 連接視頻驅(qū)動程序:將建立的視頻捕捉窗口與視頻設備驅(qū)動程序相連。 3. 視頻捕獲初始化。 4. 視頻捕捉設置:vfw 下視頻捕捉參數(shù)的設置可以通過調(diào)用函數(shù)或彈出對話框的 形式來實現(xiàn)。一般視頻驅(qū)動程序允許設置
58、的參數(shù)包括視頻源選擇、視頻格式、視頻顯 示格式等。 5. 設置回調(diào)函數(shù):通過回調(diào)函數(shù)來通知程序視頻事件的發(fā)生,比如捕捉一幀圖像 成功的消息,捕捉出錯的消息等。 6. 結(jié)束捕捉:結(jié)束捕捉是應該有一些清除工作。如釋放分配的內(nèi)存,斷開捕捉窗 口與視頻捕捉驅(qū)動程序的連接,清除視頻捕捉窗口等。 窗口類為捕獲數(shù)字視頻流及其相關(guān)操作提供了很大的方便,靈活編寫其中的回調(diào) 函數(shù)可滿足實時視頻傳輸?shù)男枰?,例如應用程序可直接從緩沖中取得數(shù)字視頻并對其 進行壓縮編碼后實時地傳到遠端的客戶端。 在 vc+中,采用 vfw 技術(shù),客戶端通過 capsetcallbackonframe()注冊回調(diào)函數(shù), 當采集卡采集到一幅
59、圖像后,系統(tǒng)就會自動調(diào)用回調(diào)函數(shù),然后再回調(diào)函數(shù)中使用 icseqcompressframe()函數(shù)進行壓縮。然后再通過 winsock 將壓縮后的數(shù)據(jù)發(fā)送到另 一客戶端。該客戶端接收完一幀以后,交給 icdecompress()解壓,最后用 setdibitstodevice()將圖像顯示出來。 基本的捕獲設置包括設置捕獲速度(每秒捕獲多少幀) 、是否同時捕獲聲頻、捕獲 緩沖、允許最大丟失多少幀和是否使用 dos 內(nèi)存,以及使用鍵盤的哪個鍵或鼠標的哪 個鍵來終止捕獲等內(nèi)容,這些設置使用 captureparams 結(jié)構(gòu)來描述, capcapturegetsetup 宏來得到當前的設置,然后改
60、變此結(jié)構(gòu)的成員變量,再使用 capcapturesetsetup 宏設置新的設置。 設置捕獲速度,通過使用 capcapturegetsetup 宏來得到當前的捕捉速度,將當前 的捕捉速度保存在 captureparams 結(jié)構(gòu)的 dwrequestmicrosecperframe 成員變量中, 也可以通過設置此變量來改變當前設置值。 設置終止捕獲,同樣通過使用 capcapturegetsetup 宏來得到當前的設置,當前按 鍵設置保存在 captureparams 結(jié)構(gòu)的 vkeyabort 成員中,鼠標設置保存在 fabortleftmouse 和 fabortrightmouse 成員
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年標桿住宅區(qū)前期物業(yè)管理服務合同樣本
- 2025年電子設備市場拓展策劃股權(quán)轉(zhuǎn)讓協(xié)議
- 2025年石料堆放策劃與實施合作協(xié)議
- 2025年互聯(lián)網(wǎng)購銷合同互聯(lián)網(wǎng)信息服務部分
- 2025年兒童保育服務合同樣本
- 2025年中小企業(yè)板塊股票發(fā)行與交易協(xié)議
- 2025年辦公家具租賃合同格式
- 2025年工程項目策劃執(zhí)行與進度管理補充協(xié)議
- 2025年礦產(chǎn)資源開采權(quán)質(zhì)押策劃協(xié)議書
- 2025年策劃權(quán)威離婚協(xié)議書模板集
- 氫能與燃料電池-課件-第四章-氫的性質(zhì)
- 供水企業(yè)安全培訓班
- 生化檢驗報告單模板
- 面試評估報告
- 蘋果樹病蟲害防治
- 2022年山東省青島一中自主招生化學模擬試卷一(附答案詳解)
- 深圳市非學科類校外培訓機構(gòu)設立材料
- 《產(chǎn)品設計》(北希望)教學資料 課程標準 產(chǎn)品設計課程標準
- 部編版語文四年級下冊第7單元核心素養(yǎng)教案
- 雨巷戴望舒說課
- 魯教版六年級數(shù)學下冊(五四制)全冊課件【完整版】
評論
0/150
提交評論