freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文-在線瀏覽

2024-10-31 16:01本頁(yè)面
  

【正文】 MFC 與 C 語言 API 的關(guān)系 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 7 設(shè)置 Microsoft 基本類庫(kù)與其它 Windows 類庫(kù)所不同的唯一特征就是它與 C 語言編寫的 Windows API 的緊密的映射關(guān)系。這種直接訪問并不意味著類可以完全取代 API。只有在有明顯優(yōu)勢(shì)時(shí),一個(gè) Windows 函數(shù)才被一個(gè)類成員函數(shù)所替代 。必要時(shí),也可以 MFC 可以用面向?qū)ο蟮姆椒▉碚{(diào)用 Windows API,因 為 MFC 不修改也不隱藏 Windows 程序的基本結(jié)構(gòu)。例如,版本 中包含了大約 200 個(gè)不同的類。 MFC層次結(jié)構(gòu)大約可分為幾種不同的類型的類: 1. 根類: Cobject Microsoft 基本類庫(kù)中的大多數(shù)類都是由在類層次表中根上的唯一的一個(gè)基類派生而來的。它們對(duì)大多數(shù)應(yīng)用提供了通用功能。 3. 窗口、對(duì)話 和控件類 類 CWnd 和它的派生類封裝了 HWND,它是一個(gè) Windows 窗口。類庫(kù)提供的派生類表示各種窗口??梢允褂?CWnd 派生出來的一個(gè)類,也可以從其中派生出自己的類。這叫作一個(gè)設(shè)備上下文(或 DC)。 5. 文件和數(shù)據(jù)庫(kù)類 這些類允許將信息存儲(chǔ)在一個(gè) 數(shù)據(jù)庫(kù)或一個(gè)磁盤文件中。 6. Inter 和網(wǎng)絡(luò)類 這些類允許和其它使用 ISAPI 的計(jì)算機(jī)或一個(gè) Windows Socket 交換信息。 支持連接的類的分類: ISAPI 類、 Windows 套接字類、 Win32 Inter 類。 MFC 對(duì)多線程編程的支持 Win32 SDK 函數(shù)支持進(jìn)行多線程的程序設(shè)計(jì),并提供了操作系統(tǒng)原理中的各種同步、互斥和臨界區(qū)等操作。 CWinThread 對(duì)象代表在一個(gè)應(yīng)用程序內(nèi)運(yùn)行的線程。另外, CWinThread 對(duì)象允許一給定的應(yīng)用程序擁有多個(gè)線程。工作者線程沒有收發(fā)消息的功能:例如,在電子表格應(yīng)用程 序中進(jìn)行后臺(tái)計(jì)算的線程。 CWinApp 及其派生類是用戶界面線程的例子。CWinThread 類的對(duì)象存在于線程的生存期。 要使你的代碼和 MFC 是完全線程安全的, CWinThread 類是完全必要的。由于依賴 CWinThread 來處理線程局部數(shù) 據(jù),任何使用 MFC 的線程必須由 MFC 創(chuàng)建。為了創(chuàng)建一個(gè)線程,調(diào)用 AfxBeginThread 函數(shù)。如果你需要用戶界面線程,則將指向你的 CWinThread 派生類的CRuntimeClass 的指針傳遞給 AfxBeginThread。對(duì)于工作 者線程和用戶界面線程,你可以指定可選的參數(shù)來修改優(yōu)先級(jí), 堆棧大小, 創(chuàng)建標(biāo)志和安全屬性。 與調(diào)用 AfxBeginThread 相反,你可以構(gòu)造一個(gè) CWinThread 派生類的對(duì)象,然后調(diào)用 CreateThread。 創(chuàng)建線程也可以使用 API 函數(shù): CreateThread 函數(shù)完成。 VFW 簡(jiǎn)介 VFW 是 Microsoft 1992 年推出的關(guān)于數(shù)字視頻的一個(gè)軟件包,它能使應(yīng)用程 序 數(shù)字化并播放從傳統(tǒng)模 擬 視頻源得到的視頻剪輯 。 為了解決數(shù)字視頻數(shù)據(jù)量大的問題,需要對(duì)數(shù)據(jù)進(jìn)行壓縮。 VFW 給程序員提供 VBX 和 AVICap 窗口類的高級(jí)編程工具,使程序員能通過發(fā)送消息或設(shè)置屬性來捕獲、播 放和編輯視頻剪輯。 VFW 主要由以下六個(gè)模塊組成: 1. :包含了執(zhí)行視頻捕獲的函數(shù),它給 AVI 文件 、 I/O 和視頻音頻設(shè)備驅(qū)動(dòng)程序提供一個(gè)高級(jí)接口; 2. :用一套特殊的 DrawDib 函數(shù)來處理屏幕上的視頻操作 ; 3. :此驅(qū)動(dòng)程序包括對(duì) VFW 的 MCI 命令的解釋器; 4. :支持由標(biāo)準(zhǔn)多媒體 I/O( mmio)函數(shù)提供的更高的命令來訪問 AVI 文件; 5. 壓縮管理器( ICM):管理用于視頻壓縮 /解壓縮的編解碼器( CODEC); 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 10 6. 音頻壓縮管理器 ACM:提供與 ICM 相似的服務(wù),不同的是它適于波形音頻。 特別是它提供了功能強(qiáng)大、簡(jiǎn)單易行、類似于 MCIWnd的窗口類 AVICap。 AVICap 支持實(shí)時(shí)的視頻流捕獲和單幀捕獲 , 并提供對(duì)視頻源的控制。 對(duì)于使用沒有視頻疊加能力的捕獲卡的 PC 機(jī)來說,用 MCI 提供的命令集是無法捕獲視頻流的。同時(shí),它也可將數(shù)字視頻捕獲到文件。用 AVICap 窗口類創(chuàng)建的窗口(通過 capCreateCaptureWindow 函數(shù)創(chuàng)建)被稱為 “ 捕獲窗 ” ,其窗口風(fēng)格一般為 WS_CHILD 和 WS_VISIBLE。捕獲窗具有下列功能: 1. 將視頻流和音頻流捕獲到一個(gè) AVI文件中; 2. 動(dòng)態(tài)地同視頻和音頻輸入器件連接或斷開; 3. 以 Overlay 或 Preview 模式對(duì)輸入的視頻流進(jìn)行實(shí)時(shí)顯示; 4. 在捕獲時(shí)可指定所用的文件名并能將 捕獲文件的內(nèi)容拷貝到另一個(gè)文件; 5. 設(shè)置捕獲速率; 6. 顯示控制視頻源、視頻格式、視頻壓縮的對(duì)話框; 7. 創(chuàng)建、保存或載入調(diào)色板; 8. 將圖像和相關(guān)的調(diào)色板拷貝到剪貼板; 9. 將捕獲的一個(gè)單幀圖像保存為 DIB格式的文件。在物理上,這種模式需要通過VGA卡在監(jiān)視器上顯示。只有部分視頻捕獲卡才具有視頻疊加能力 。 比如 , 將宏capCaptureSequenceNoFile 同用 capSetCallbackOnVideoStream 登記的回調(diào)函數(shù)一起使用 , 可使應(yīng)用程序直接使用視頻和音頻數(shù)據(jù) 。應(yīng)用程序可用捕獲窗來登記回調(diào) 函數(shù)(由用戶編寫,而由系統(tǒng)調(diào)用),以便在發(fā)生下列情況時(shí) , 它能通知應(yīng)用程序 , 作出相應(yīng)的反應(yīng):捕獲窗狀態(tài)改變;出錯(cuò);視頻幀和音頻緩存可以使用;在捕獲過程中,其它應(yīng)用程序處于讓步( Yield)地位。 令人高興的是,發(fā)送 AVICap 窗口消息所能完成的功能都能調(diào)用相應(yīng)的宏來完成。 視頻部分主要是利用 Video Capture 函數(shù)庫(kù)來獲取影像的。 Video Capture 的主要結(jié)構(gòu): 結(jié)構(gòu)體 CAPTUREPARAMS 主要包含一些獲取圖像的參數(shù): DWORD dwRequestMicroSecPerFrame 代表相鄰兩個(gè) frame 的獲取時(shí) 間間隔; BOOL fYield值為 TRUE,則表示 Windows 會(huì)以另一個(gè) thread 來捕獲影像,值為 FALSE,程序會(huì)在捕捉影像后顯示忙碌狀態(tài); BOOL fCaptureAudio 其值表示是否需要同時(shí)獲取聲音資料。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 12 結(jié)構(gòu)體 COMPVARS 主要是記錄所有和壓縮相關(guān)的信息,重要的成員: DWORD fccHandler 為 pressor 句柄; LPBITMAPINFO lpbiIn 指向待壓縮影像BITMAPINFO 的指標(biāo); LPBITMAPINFO lpbitOut:指向壓縮完影像 BITMAPINFO 的指標(biāo); LONG lKey 代表 keyframe rate,而所謂 key frame 是指此 frame 在解壓縮時(shí)不需要依賴前面的 frame; LONG lQ 代表影像壓縮后的品質(zhì),取值為 1~ 10000的整數(shù)。 VC++ 簡(jiǎn)介 我們通常所說的 Visual C++實(shí)際上是一個(gè)完善的、非常強(qiáng)大的 C++程序開發(fā)環(huán)境,它的名字是 Microsoft Developer Studio 。但如果你不圍繞 Developer Studio 來進(jìn)行學(xué)習(xí),就不能有效地使用 Visual C++( Developer Studio 聽起來很像 Visual Studio , 但它們之間沒有關(guān)系)。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 13 第三章 系統(tǒng)功能分析 系統(tǒng)功能模塊圖 圖 系統(tǒng)功能模塊圖 文字聊天 文字聊天采用的是 TCP 模式,包括服務(wù)器端( server) 和客戶端 (client)。當(dāng)有用戶退出時(shí),服務(wù)器做出響應(yīng),提示在線用戶 ,下線用戶。 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 14 圖 文字聊天流程圖 語音視頻聊天 語音視頻聊天時(shí)采用的是 UDP 模式,客戶端與客戶端點(diǎn)對(duì)點(diǎn)的進(jìn)行,不需要經(jīng)過服務(wù)器端中轉(zhuǎn)。 A客戶端向 B客戶端請(qǐng)求語音視頻聊天是通過 B客戶端的用戶名來獲得 B 客局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 15 戶端的 IP 地址,并向 B 客戶端發(fā)送語音視頻聊天請(qǐng)求,當(dāng) B客戶端接受后捕獲視頻,并進(jìn)行壓縮傳輸?shù)?A客戶端解壓并進(jìn)行播放,在 B客戶端接受視頻的同時(shí),A客戶端也捕獲視頻,壓縮傳輸?shù)?B客戶端解壓并進(jìn)行顯示。 圖 語音視頻聊天流程圖 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 16 系統(tǒng)特點(diǎn) 程序較小,啟動(dòng)速度快。在遇到可預(yù)知的故障與情況時(shí),能提示用戶并自動(dòng)退出 。 運(yùn)行環(huán)境 硬件環(huán)境: 計(jì)算機(jī)兩臺(tái),如下: CPU: 1GHz 以上 內(nèi)存: 256MB 以上 硬盤 : 20GB 以上 其它:分別配有攝像頭、麥克風(fēng)、音響或者耳機(jī)等外部設(shè)備 軟件環(huán)境: Windows XP/7操作系統(tǒng) Microsoft Visual Stdio 性能需求分析 1. 可靠性高 能在由于系統(tǒng)問題或其它原因產(chǎn)生錯(cuò)誤后,作出相對(duì)應(yīng)處理,比如網(wǎng)絡(luò)初始化失敗、服務(wù)器不在線等,可以提示用戶安全退出本程序,在出現(xiàn)不可知的錯(cuò)誤以后,可以盡量安全的退出程序。 2. 宜操作性,程序簡(jiǎn)單易懂,用戶能很容易看懂并使用。 TCP套接字的使用如下圖。 CSocket 通常和 CsocketFile 以及 Carchive 類混合使用,這兩個(gè)類負(fù)責(zé)數(shù)據(jù)的發(fā)送和接收。 CSocket 函數(shù)缺省是創(chuàng)建一個(gè)流 Socket;如果沒有使用 CArchive 類,那么還可以創(chuàng)建一個(gè)數(shù)據(jù)報(bào) Socket。接下來的操作可以創(chuàng)建 CArchive 對(duì)象關(guān)聯(lián) CsocketFile,以用來發(fā)送和接收數(shù)據(jù)。用一個(gè) list列表顯示在線用戶,隨時(shí)更新用戶登錄情況,用一個(gè) edit box 顯示客戶端的聊天內(nèi)容以及系統(tǒng)提示消息。在整個(gè)系統(tǒng)中,利用鏈表來處理所有的用戶信息:當(dāng)有用戶登錄時(shí),在鏈表尾部加入該用戶信息;當(dāng)用戶下線時(shí),在該鏈表中刪除用戶,并提示所有用戶,該用戶下線。 圖 需要使用指定的用戶名密碼登錄 圖 服務(wù)器運(yùn)行后界面 局域網(wǎng)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì) 21 當(dāng)用 戶登陸后服務(wù)器顯示了該用戶的登錄,并且記錄了當(dāng)前在線用戶的人數(shù)。 return 。 CString szUserName。 GetDlgItemText(IDC_MESSAGE,str)。 if( () = 0 ) { SetMessageBox(請(qǐng)輸入想要發(fā)送的信息 !\r\n)。 } if ( () = 0) { SetMessageBox(請(qǐng)選擇說話對(duì)象 !\r\n)。 } //消息封裝 (Message)。 (str)。msg)。 AddChatMessage(str)。其套接字的使用如下圖。 2. 連接視頻驅(qū)動(dòng)程序:將建立的視頻捕捉窗口與視頻設(shè)備驅(qū)動(dòng)程序相連。 4. 視頻捕捉設(shè)置: VFW 下視頻捕捉參數(shù)的設(shè)置可以通過調(diào)用函數(shù)或彈出對(duì)話框的形式來實(shí)現(xiàn)。 5. 設(shè)置回調(diào)函數(shù):通過回調(diào)函數(shù)來通知程序視頻事件的發(fā)生,比如捕捉一
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1