版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于VC的語(yǔ)音傳輸系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)</p><p><b> 摘 要</b></p><p> 隨著計(jì)算機(jī)應(yīng)用技術(shù)的快速發(fā)展和日益普及,網(wǎng)絡(luò)也遍及到我們生活的每個(gè)角落,為我們的學(xué)習(xí)和工作帶來(lái)極大的方便。很多人都使用過(guò)傳統(tǒng)的文字輸入聊天方式,與之不同的另外一種聊天方式就是語(yǔ)音聊天。主要對(duì)那些不會(huì)使用鍵盤(pán)的老年用戶和追求時(shí)尚的年輕人,語(yǔ)音聊
2、天是一種非常好的聊天方式,它能增加聊天雙方的親切感和真實(shí)感,語(yǔ)音聊天就涉及到語(yǔ)音的傳輸。</p><p> 本系統(tǒng)主要討論了Windows系統(tǒng)下網(wǎng)絡(luò)語(yǔ)音的傳輸,尤其是對(duì)網(wǎng)絡(luò)編程做了較深入的學(xué)習(xí)和應(yīng)用,并以語(yǔ)音聊天為例給出了應(yīng)用實(shí)例。本系統(tǒng)主要利用Windows系統(tǒng)下的API函數(shù)和SOCKET函數(shù)以及VC開(kāi)發(fā)平臺(tái)的強(qiáng)大功能來(lái)實(shí)現(xiàn)。經(jīng)過(guò)半年多的努力,終于完成了語(yǔ)音傳輸系統(tǒng)的需求分析、模塊功能劃分、多媒體編程、服務(wù)器
3、-客戶端模型等。本系統(tǒng)可以實(shí)現(xiàn)網(wǎng)絡(luò)間文字、語(yǔ)音信息的傳輸。</p><p> 關(guān)鍵詞 信息傳輸;網(wǎng)絡(luò)編程;語(yǔ)音傳輸;多媒體</p><p> The design and development of voice transmission based on VC</p><p><b> Abstract</b></p>&
4、lt;p> The Internet is more and more popular in our lives because of the development of computer technology. Internet helps us in study and work. Many people use the traditional input method to chat, but there is a ne
5、w method that we can speak to our friends in real-time. Voice chatting is developed for ones who do not know how to type, or the young people, it can increase the realistic and friendliness. </p><p> This p
6、aper discusses the transmission of voice by network in windows operation system, such as voice chats. The system is programmed with API functions and Socket functions of the windows. After six months of effort, the voice
7、 chatting system was completed. This system includes requirements analysis, and functional modules, multimedia programming, server-client model. In network, the text and voice can be transported through this system . <
8、;/p><p> Key words: Information transmission; Network programming; Voice transmission; Multimedia</p><p> 目 錄 </p><p><b> 論文總頁(yè)數(shù):19頁(yè)</b></p><p>
9、<b> 1引言1</b></p><p> 2語(yǔ)音傳輸系統(tǒng)需求分析1</p><p> 3開(kāi)發(fā)工具與環(huán)境介紹2</p><p> 3.1Visual C++概述2</p><p> 3.1.1Visual C++簡(jiǎn)介2</p><p> 3.1.2Visual
10、C++的發(fā)展過(guò)程2</p><p> 3.1.3Visual C++的特點(diǎn)3</p><p> 3.2Visual C++的集成開(kāi)發(fā)環(huán)境3</p><p> 3.3Windows程序設(shè)計(jì)基礎(chǔ)4</p><p> 3.3.1概述4</p><p> 3.3.2消息處理函數(shù)4</p&g
11、t;<p> 3.3.3窗口的建立5</p><p> 3.3.4消息循環(huán)6</p><p> 4Windows網(wǎng)絡(luò)編程8</p><p> 4.1網(wǎng)絡(luò)和協(xié)議8</p><p> 4.2Winsock 接口9</p><p> 4.3服務(wù)器程序和客戶程序創(chuàng)建過(guò)程11&l
12、t;/p><p> 5語(yǔ)音傳輸系統(tǒng)功能實(shí)現(xiàn)13</p><p> 5.1語(yǔ)音模塊實(shí)現(xiàn)13</p><p> 5.2服務(wù)器和客戶端功能的實(shí)現(xiàn)14</p><p> 6系統(tǒng)功能的測(cè)試與分析15</p><p> 6.1語(yǔ)音聊天程序使用介紹15</p><p> 6.2測(cè)
13、試與分析16</p><p><b> 結(jié) 論16</b></p><p><b> 參考文獻(xiàn)17</b></p><p><b> 致 謝18</b></p><p><b> 聲 明19</b></p>
14、<p><b> 引言</b></p><p> 20世紀(jì)是計(jì)算機(jī)的世紀(jì),計(jì)算機(jī)及相關(guān)技術(shù)的快速發(fā)展令人目不暇接。伴隨著計(jì)算機(jī)技術(shù)的發(fā)展,網(wǎng)絡(luò)的發(fā)展更加迅猛,令人不禁有“只有想不到,沒(méi)有做不到”之感。網(wǎng)絡(luò)已經(jīng)成為最大的信息傳輸方式之一。在新的世紀(jì)里,我們更要掌握好計(jì)算機(jī)知識(shí)。隨著高新技術(shù)的不斷發(fā)展,計(jì)算機(jī)更新速度越來(lái)越快,計(jì)算機(jī)已經(jīng)逐漸溶入人們的生活。很難想象沒(méi)有計(jì)算機(jī)的現(xiàn)代
15、社會(huì)將變成一個(gè)什么樣子。計(jì)算機(jī)已經(jīng)和我們的生活息息相關(guān)。而可視化操作簡(jiǎn)單的Microsoft Windows操作系統(tǒng)就越來(lái)越頻繁的出現(xiàn)在我們的工作學(xué)習(xí)中,給我們帶來(lái)了很多便利。隨著計(jì)算機(jī)的不斷發(fā)展,網(wǎng)絡(luò)技術(shù)也在不斷發(fā)展?,F(xiàn)在我們通過(guò)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)、討論、交流、游戲等等,網(wǎng)絡(luò)正逐漸成為我們身邊不可或缺的東西。那么要進(jìn)行交流,語(yǔ)言、文字是不可缺少的。如何進(jìn)行網(wǎng)絡(luò)間的語(yǔ)言文字交流?通過(guò)對(duì)Visual C++和Windows網(wǎng)絡(luò)編程技術(shù)的學(xué)習(xí),本
16、系統(tǒng)研制出一個(gè)能夠進(jìn)行網(wǎng)絡(luò)間語(yǔ)言文字交流的語(yǔ)音傳輸軟件。 </p><p> Visual C++是一種可視化的、面向?qū)ο蟮腤indows開(kāi)發(fā)語(yǔ)言,它具有易用、通用和開(kāi)發(fā)效率高的特點(diǎn)。隨著微軟公司對(duì)他不斷的改進(jìn)以及計(jì)算機(jī)本身在性能上的迅速提高,使得Visual C++越來(lái)越適合于一般的應(yīng)用程序的開(kāi)發(fā)。自從Visual C++ 6.0推出以來(lái),已經(jīng)為非常多的開(kāi)發(fā)人員所使用,一直是當(dāng)前最主流的開(kāi)發(fā)工具之一。而Win
17、dows操作系統(tǒng)大家更是熟悉不過(guò)了。那么提到Windows編程就不能不提API。API是Application Programming Interface的簡(jiǎn)寫(xiě),意思是應(yīng)用程序編程接口??梢园阉胂蟪梢粋€(gè)程序庫(kù),提供各式各樣與Windows系統(tǒng)服務(wù)有關(guān)的函數(shù),例如CreateFile是用來(lái)創(chuàng)建文件的API函數(shù),C的標(biāo)準(zhǔn)庫(kù)函數(shù)create也提供了創(chuàng)建文件的函數(shù),但是他是靠調(diào)用CreateFile函數(shù)完成創(chuàng)建文件功能的。事實(shí)上,在Windo
18、ws下運(yùn)行的程序最終都是通過(guò)調(diào)用API函數(shù)來(lái)完成創(chuàng)建工作的,因此,可以把Win32 API看成是最底層的服務(wù)。本文所介紹的網(wǎng)絡(luò)語(yǔ)音傳輸程序就是一個(gè)在Windows環(huán)境下以Visual C++為編程語(yǔ)言的應(yīng)用程序。</p><p> 語(yǔ)音傳輸系統(tǒng)需求分析</p><p> 隨著現(xiàn)代計(jì)算機(jī)技術(shù)的不斷發(fā)展,多媒體已經(jīng)成為現(xiàn)代計(jì)算機(jī)不可缺少的功能,而計(jì)算機(jī)的音頻,視頻功能是其中最為重要的部分。
19、而隨著網(wǎng)絡(luò)的不斷發(fā)展,網(wǎng)絡(luò)已經(jīng)成為人們最重要的交流方式之一。計(jì)算機(jī)硬件的更新,特別是海量存儲(chǔ)設(shè)備和大容量?jī)?nèi)存在PC機(jī)上的實(shí)現(xiàn),對(duì)音頻媒體進(jìn)行數(shù)字化處理早已經(jīng)成為可能。</p><p> 現(xiàn)在,企業(yè)、機(jī)關(guān)、學(xué)校都建立起了局域網(wǎng)。雖然可以通過(guò)文件共享的方式進(jìn)行通訊,但單使用這種方式,非常不方便。在網(wǎng)上鄰居里,只能看到機(jī)器名,不清楚對(duì)方是誰(shuí),也不知道對(duì)方機(jī)器里有什么資源可以共享,尤其當(dāng)局域網(wǎng)的機(jī)器很多時(shí),這種方式就更
20、加麻煩了。而文字聊天方式比較單一缺乏真實(shí)感,所以語(yǔ)音通信就有了必要。但是語(yǔ)音傳輸需要有很大的網(wǎng)絡(luò)帶寬,對(duì)于撥號(hào)上網(wǎng)用戶,語(yǔ)音傳輸仍然是奢侈品,不過(guò)對(duì)于局域網(wǎng)和寬帶用戶來(lái)說(shuō),是很不錯(cuò)的選擇,本系統(tǒng)就是研究的基于局域網(wǎng)的語(yǔ)音傳輸,并以語(yǔ)音聊天為例給出了實(shí)例。</p><p> 語(yǔ)音聊天方式一般有兩種,一種是專(zhuān)門(mén)的語(yǔ)音聊天室,采用Web方式,B/S結(jié)構(gòu),另外一中則是類(lèi)似于QQ、MSN等聊天工具,采用C/S結(jié)構(gòu)。本設(shè)計(jì)
21、是采用的后者。TCP/IP網(wǎng)絡(luò)中兩個(gè)進(jìn)程間的相互作用的主機(jī)模式是客戶機(jī)/服務(wù)器模式(Client/Server model)。該模式的建立基于以下兩點(diǎn):1、非對(duì)等作用;2、通信完全是異步的。客戶機(jī)/服務(wù)器模式在操作過(guò)程中采取的是主動(dòng)請(qǐng)示方式,首先服務(wù)器方要先啟動(dòng),并根據(jù)請(qǐng)示提供相應(yīng)服務(wù)。</p><p> 綜上所述,做一個(gè)語(yǔ)音通信軟件是有必要的,也是能夠?qū)崿F(xiàn)的。</p><p><
22、b> 開(kāi)發(fā)工具與環(huán)境介紹</b></p><p> Visual C++概述</p><p> Visual C++簡(jiǎn)介</p><p> VC是Microsoft公司的重要?dú)埰分弧狣eveloper Studio工具集的重要組成部分。他用來(lái)在Windows(包括95、98、NT、2000、XP等)環(huán)境下開(kāi)發(fā)應(yīng)用程序,是一種功能強(qiáng)大、行
23、之有效的可視化編程工具。VC以可視化技術(shù)為基礎(chǔ),以C++語(yǔ)言為藍(lán)本,以眾多的集成工具為骨架,在計(jì)算機(jī)領(lǐng)域的諸多方面都發(fā)揮著重要的作用。VC提供了簡(jiǎn)潔實(shí)用的開(kāi)發(fā)環(huán)境,集成的工具集能讓用戶高效率地開(kāi)發(fā)應(yīng)用程序。VC提供了MFC類(lèi)庫(kù),一般性的工作可以全部交給VC來(lái)完成,用戶只要在其基礎(chǔ)上做出自己想要實(shí)現(xiàn)的功能即可。VC完成目標(biāo)所花費(fèi)的時(shí)間要少得多。</p><p> Visual C++的發(fā)展過(guò)程</p>
24、<p> 作為一種C/C++語(yǔ)言的集成開(kāi)發(fā)環(huán)境(IDE),產(chǎn)生VC的最早的根源其實(shí)要追溯到DOS時(shí)代的Borland公司,當(dāng)初Borland公司開(kāi)發(fā)的Turbo Pascal和Turbo C讓程序員們深刻感受到了把編輯器和編譯器集成在一起的IDE是多么的方便,微軟公司也看到了這一優(yōu)點(diǎn),于是相繼開(kāi)發(fā)了Quick C和Microsoft C/C++等多個(gè)DOS版本的C/C++集成開(kāi)發(fā)工具。隨著Windows的不斷成熟,Mic
25、rosoft公司決定放棄DOS下的開(kāi)發(fā)工作,正式推出Windows下的VC 1.0,早期的VC功能并不怎么強(qiáng)大,使用起來(lái)也不方便,1.0版和1.5版都是16位編程工具。VC的革命性改變得益于Windows95的推出,從VC2.0開(kāi)始,微軟公司又放棄了16位編程,以后的VC都只用于32位編程開(kāi)發(fā),為了與MFC類(lèi)庫(kù)的版本號(hào)保持一致,微軟公司跳過(guò)了版本3,直接推出了VC4.0,這個(gè)版本及修訂版4.2的部分界面風(fēng)格一直保留到VC6.0。從VC4
26、.0到VC6.0,VC的各種功能不斷增強(qiáng),MFC類(lèi)庫(kù)的內(nèi)容也越來(lái)越豐富,現(xiàn)在利用VC開(kāi)發(fā)應(yīng)用程序已經(jīng)是一種相對(duì)輕松的事情了。</p><p> Visual C++的特點(diǎn)</p><p> 在VC發(fā)展的同時(shí),Borland公司也在不斷改進(jìn)他的C/C++開(kāi)發(fā)工具,并相繼推出了Borland C++和C++ Builder等產(chǎn)品,其實(shí),現(xiàn)在的C++ Builder也是一個(gè)非常優(yōu)秀的開(kāi)發(fā)工具
27、,但是基于下邊的幾點(diǎn)原因,我們可以看出VC有著不可比擬的優(yōu)越性:</p><p> 1 VC的核心——MFC類(lèi)庫(kù)已經(jīng)是事實(shí)上的行業(yè)標(biāo)準(zhǔn),Borland自己開(kāi)發(fā)的類(lèi)庫(kù)也在向MFC看齊。</p><p> 2 VC與Visual Studio中的其他可視化開(kāi)發(fā)工具緊密集成,可用于開(kāi)發(fā)非常專(zhuān)業(yè)的應(yīng)用程序。</p><p> 3 VC的聯(lián)機(jī)幫助已經(jīng)被集成到MSDN庫(kù)中
28、去了,后者包含了微軟公司大部分產(chǎn)品的技術(shù)文檔和支持資料,內(nèi)容相當(dāng)豐富,是程序員不可多得的參考資料,現(xiàn)在MSDN庫(kù)隨著Visual Studio6.0一起發(fā)行,極大地方便了用戶。</p><p> Visual C++的集成開(kāi)發(fā)環(huán)境</p><p> Visual Studio 6.0企業(yè)版一共有6張光盤(pán),如果只安裝VC 6.0那么需要第一張光盤(pán)和MSDN庫(kù)。VC 6.0可以安裝在所有運(yùn)
29、行Windows 95/98/NT/2000/XP等的系統(tǒng)上。安裝按提示完成后,開(kāi)始菜單的程序中應(yīng)生成Microsoft Visual Studio 6.0和Microsoft Developer Network兩個(gè)程序組。</p><p> 從Visual Studio 6.0的程序組中運(yùn)行VC6.0,便可啟動(dòng)VC6.0的開(kāi)發(fā)環(huán)境——Developer Studio。每次運(yùn)行VC6.0時(shí),首先會(huì)彈出一個(gè)“Ti
30、p of the Day”的對(duì)話框,其中介紹有很多關(guān)于開(kāi)發(fā)環(huán)境的使用方法以及編程調(diào)試方面的小技巧,如果不想看他,可以選擇在下一次啟動(dòng)時(shí)不再顯示。</p><p> 如圖3-1所示,VC6.0的窗口被分成了幾部分,最上邊是標(biāo)題條、菜單和工具欄,中間左邊的窗口是工作區(qū)窗口,右邊為文檔窗口,顯示正在編輯的文本文件(或資源),下方為輸出窗口和狀態(tài)欄。</p><p> 除了主菜單和工具欄外,V
31、C6.0開(kāi)發(fā)環(huán)境還提供了大量的上下文關(guān)聯(lián)菜單,用鼠標(biāo)右鍵單擊窗口中的很多地方都會(huì)彈出一個(gè)關(guān)聯(lián)菜單,此菜單包含與被單擊項(xiàng)目相關(guān)的各種命令,從而可以加快一些常規(guī)操作的速度。</p><p> VC啟動(dòng)之后,窗口中幾乎一切都是空白的,所以我打開(kāi)了一個(gè)工程。中文版的VC++ 6.0,其工作界面如下:</p><p> 圖3-1 VC主窗口</p><p> Windo
32、ws程序設(shè)計(jì)基礎(chǔ)</p><p><b> 概述</b></p><p> Windows程序具有相對(duì)固定的結(jié)構(gòu),對(duì)編寫(xiě)者而言,不需要書(shū)寫(xiě)整個(gè)過(guò)程,大部分過(guò)程由系統(tǒng)完成。程序中只要按一定的格式填寫(xiě)系統(tǒng)留給客戶的那一小部分。</p><p> 所需要完成的有:窗口類(lèi)的定義、窗口的建立、消息函數(shù)的書(shū)寫(xiě)、消息循環(huán)。</p><
33、;p><b> 消息處理函數(shù)</b></p><p> Windows程序是事件驅(qū)動(dòng)的,對(duì)于一個(gè)窗口,它的大部分例行維護(hù)是由系統(tǒng)維護(hù)的。每個(gè)窗口都有一個(gè)消息處理函數(shù)?! ≡谙⑻幚砗瘮?shù)中,對(duì)傳入的消息進(jìn)行處理。系統(tǒng)內(nèi)還有它自己的缺省消息處理函數(shù)?! 】蛻魧?xiě)一個(gè)消息處理函數(shù),在窗口建立前,將消息處理函數(shù)與窗口關(guān)聯(lián)。這樣,每當(dāng)有消息產(chǎn)生時(shí),就會(huì)去調(diào)用這個(gè)消息處理函數(shù)。</p&
34、gt;<p> 通常情況下,客戶都不會(huì)處理全部的消息,而是只處理自己感興趣的消息,其他的,則送回到系統(tǒng)的缺省消息處理函數(shù)中去。</p><p> LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)</p><p><b> {</b><
35、;/p><p> switch (message)</p><p><b> {</b></p><p><b> case ...</b></p><p><b> ...</b></p><p><b> case ...</b
36、></p><p><b> ...</b></p><p><b> }</b></p><p> return DefWindowProc (hwnd, message, wParam, lParam) ;</p><p><b> }</b></p&g
37、t;<p><b> 窗口的建立</b></p><p> 客戶需要自己建立窗口,建立后會(huì)得到系統(tǒng)返回的窗口句柄(HWND),后繼的針對(duì)窗口的操作都針對(duì)句柄進(jìn)行。</p><p><b> 1.注冊(cè)窗口類(lèi)</b></p><p> 建立窗口前,需要制定好這個(gè)窗口的相關(guān)屬性,最主要的就是將自己定義的消息
38、處理函數(shù)與窗口關(guān)聯(lián),其他的屬性還包括:菜單、圖標(biāo)等等。</p><p> 這個(gè)屬性指定步驟是通過(guò)指定"窗口類(lèi)"來(lái)完成的。</p><p> 對(duì)于自己建立的窗口,這個(gè)"窗口類(lèi)"需要自己制定,也即自己充一個(gè)WNDCLASS結(jié)構(gòu),然后向系統(tǒng)注冊(cè)。</p><p> 對(duì)于一些特殊窗口,如按鈕等控件,他們的行為是系統(tǒng)制定好了的,所
39、以不需要自己注冊(cè),直接使用對(duì)應(yīng)的“窗口類(lèi)”名稱(chēng)就行了。</p><p><b> 2.建立窗口</b></p><p> 建立窗口時(shí),注冊(cè)的"窗口類(lèi)"名稱(chēng)作為參數(shù)傳入。</p><p> 這樣,當(dāng)有針對(duì)該窗口的消息時(shí),將調(diào)用“窗口類(lèi)”中指定的消息處理函數(shù),在其中得到處理。</p><p> 在
40、應(yīng)用程序中使用對(duì)話框是很方便的,因?yàn)閷?duì)話框可以從模板創(chuàng)建,而模板可以使用可視化資源編譯器進(jìn)行編譯,這就大大簡(jiǎn)化了窗口界面的設(shè)計(jì)過(guò)程。同時(shí)為了簡(jiǎn)化程序設(shè)計(jì),Windows在內(nèi)部也定義了許多窗口類(lèi),即常說(shuō)的字窗口控件,應(yīng)用程序直接使用這些類(lèi)名就可以創(chuàng)建子窗口。</p><p> 同子窗口控件類(lèi)似,對(duì)話框的窗口函數(shù)也由User32.dll提供,所以在創(chuàng)建對(duì)話框之前不需要注冊(cè)窗口類(lèi)。在創(chuàng)建對(duì)話框時(shí)并不需要調(diào)用Creat
41、eWindowEx函數(shù),而是調(diào)用了DialogBoxParam或CreateDialogBox函數(shù)。前一個(gè)函數(shù)用來(lái)創(chuàng)建模式對(duì)話框,后一個(gè)函數(shù)用來(lái)創(chuàng)建非模式對(duì)話框,它們都在內(nèi)部調(diào)用了CreateWindowEx函數(shù),使用的風(fēng)格、大小和位置等參數(shù)取自資源中定義的對(duì)話框模板。</p><p> 要?jiǎng)?chuàng)建對(duì)話框就要先創(chuàng)建對(duì)話框模板。對(duì)話框模板定義了對(duì)話框的基本屬性,這包括該對(duì)話框的寬度和高度及其中包含的控件。創(chuàng)建對(duì)話框模
42、板最簡(jiǎn)單的方法是使用VC自帶的資源編譯器,使用VC++的“Insert/Resource”菜單命令,可以非常方便地向工程中加入對(duì)話框資源。</p><p><b> 消息循環(huán)</b></p><p> 系統(tǒng)會(huì)將針對(duì)這個(gè)程序的消息依次放到程序的“消息隊(duì)列”中,由程序自己依次取出消息,在分發(fā)到對(duì)應(yīng)的窗口中去。</p><p> 因此,建立窗口
43、后,將進(jìn)入一個(gè)循環(huán)。</p><p> 在循環(huán)中,取出消息、派發(fā)消息,循環(huán)往復(fù),直到取得的消息是退出消息。</p><p> 循環(huán)退出后,程序即結(jié)束。</p><p> #include "stdafx.h"</p><p> #include <windows.h></p><p><
44、;b> //消息處理函數(shù)</b></p><p> //參數(shù):窗口句柄,消息,消息參數(shù),消息參數(shù)</p><p> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)</p><p><b> {</b><
45、/p><p> //處理感興趣的消息</p><p> switch (message)</p><p><b> {</b></p><p> case WM_DESTROY:</p><p> //當(dāng)用戶關(guān)閉窗口,窗口銷(xiāo)毀,程序需結(jié)束,發(fā)退出消息,以退出消息循環(huán)</p>&
46、lt;p> PostQuitMessage (0) ;</p><p> return 0 ;</p><p><b> }</b></p><p> //其他消息交給由系統(tǒng)提供的缺省處理函數(shù)</p><p> return ::DefWindowProc (hwnd, message, wParam,
47、lParam) ;</p><p><b> }</b></p><p><b> //應(yīng)用程序主函數(shù)</b></p><p> //參數(shù):實(shí)例句柄、前一個(gè)實(shí)例的句柄、命令行參數(shù)、窗口顯示方式int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstan
48、ce,PSTR szCmdLine, int iCmdShow)</p><p><b> {</b></p><p><b> //注冊(cè)窗口類(lèi)</b></p><p> static TCHAR szAppName[] = TEXT ("HelloWin") ; //窗口類(lèi)名稱(chēng)</p&g
49、t;<p> //定制"窗口類(lèi)"結(jié)構(gòu)</p><p> WNDCLASS wndclass ;</p><p> wndclass.style = CS_HREDRAW | CS_VREDRAW ;</p><p> wndclass.lpfnWndProc = WndProc ; //關(guān)聯(lián)消息處理函數(shù)</p>
50、<p> wndclass.cbClsExtra = 0 ;</p><p> wndclass.cbWndExtra = 0 ;</p><p> wndclass.hInstance = hInstance ; //實(shí)例句柄</p><p> wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION)
51、; //圖標(biāo)</p><p> wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; //光標(biāo)</p><p> wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); //畫(huà)刷</p><p> wndclass.lpszMenuName =
52、 NULL ;</p><p> wndclass.lpszClassName = szAppName; //類(lèi)名稱(chēng)</p><p><b> //注冊(cè)</b></p><p> if (!ReGISterClass (&wndclass))</p><p><b> {</b>&l
53、t;/p><p> MessageBox (NULL, TEXT ("RegisterClass Fail!"),</p><p> szAppName, MB_ICONERROR) ;</p><p> return 0 ;</p><p><b> }</b></p><p
54、><b> //建立窗口</b></p><p> HWND hwnd ;</p><p> hwnd = CreateWindow (szAppName, //窗口類(lèi)名稱(chēng)</p><p> TEXT ("The Hello Program"), //窗口標(biāo)題</p><p> WS_
55、OVERLAPPEDWINDOW, //窗口風(fēng)格</p><p> CW_USEDEFAULT,</p><p> CW_USEDEFAULT,</p><p> CW_USEDEFAULT,</p><p> CW_USEDEFAULT,</p><p><b> NULL,</b>&
56、lt;/p><p><b> NULL,</b></p><p> hInstance, //實(shí)例句柄</p><p><b> NULL);</b></p><p> ShowWindow (hwnd, iCmdShow) ;</p><p> UpdateWindo
57、w (hwnd) ;</p><p><b> //消息循環(huán)</b></p><p><b> MSG msg ;</b></p><p> while (GetMessage (&msg, NULL, 0, 0)) //從消息隊(duì)列中取消息</p><p><b> {&l
58、t;/b></p><p> TranslateMessage (&msg) ; //轉(zhuǎn)換消息</p><p> DispatchMessage (&msg) ; //派發(fā)消息</p><p><b> }</b></p><p> return msg.wParam ;</p>
59、<p><b> }</b></p><p> Windows網(wǎng)絡(luò)編程</p><p><b> 網(wǎng)絡(luò)和協(xié)議</b></p><p> 網(wǎng)絡(luò)是可以交換數(shù)據(jù)的互相連接的計(jì)算機(jī)的集合。網(wǎng)絡(luò)的類(lèi)型很多,如LAN(局域網(wǎng))、WAN(廣域網(wǎng))、Internet。為了確保所有的傳輸平穩(wěn)地進(jìn)行,網(wǎng)絡(luò)建立在協(xié)議之上。
60、協(xié)議是一組規(guī)定,他描述了數(shù)據(jù)傳送的格式。</p><p> 用戶發(fā)送的信息要經(jīng)過(guò)各層協(xié)議的封裝,如圖4-1所示:</p><p><b> 應(yīng)用層</b></p><p><b> TCP層</b></p><p><b> IP層</b></p><
61、;p><b> 鏈路層</b></p><p> 圖4-1 TCP/IP協(xié)議棧</p><p> TCP/IP是面向連接的協(xié)議。連接的兩個(gè)設(shè)備之間,每一方都使用他自己的IP地址和端口號(hào)。通常,一方稱(chēng)為客戶,另外一方稱(chēng)為服務(wù)器??蛻羰前l(fā)出請(qǐng)求方,服務(wù)器響應(yīng)他們。例如,當(dāng)打開(kāi)網(wǎng)站時(shí),瀏覽器是客戶,WebServer是服務(wù)器。瀏覽器發(fā)出連接請(qǐng)求,初始化和服務(wù)器的
62、連接,請(qǐng)求指定的資源。服務(wù)器然后返回響應(yīng)和請(qǐng)求的數(shù)據(jù)。</p><p> 服務(wù)器通常是等待客戶連接,這叫做監(jiān)聽(tīng),這一般是在特定的IP地址和端口號(hào)進(jìn)行??蛻魞H在有需要時(shí)才啟動(dòng),因?yàn)榭蛻艨偸且粋€(gè)連接的發(fā)起者,信息的請(qǐng)求者。為了創(chuàng)建連接,客戶需要知道服務(wù)起正在監(jiān)聽(tīng)的IP地址和端口號(hào)。</p><p> 服務(wù)器和客戶方都需要使用IP地址和端口號(hào),但是服務(wù)器的IP地址和端口號(hào)一般都是固定的。在客
63、戶方,端口號(hào)并不重要,任何端口都可以使用。</p><p> 工作在軟件層的幾個(gè)協(xié)議,如HTTP、FTP、POP3、SMTP等,大多數(shù)是以服務(wù)器/客戶機(jī)方式工作的。例如,客戶產(chǎn)生請(qǐng)求,服務(wù)器響應(yīng)。請(qǐng)求和響應(yīng)數(shù)據(jù)的準(zhǔn)確格式由這些協(xié)議定義。</p><p> Winsock 接口</p><p> Winsock是處理網(wǎng)絡(luò)的Windows API。許多函數(shù)與BSD
64、 Unix中使用的Berkeley套接字函數(shù)是相同的。</p><p> 通信的雙方要建立連接,這個(gè)連接的終端就是套接字。客戶端和服務(wù)器端都有一個(gè)套接字,每個(gè)套接字與特定的IP地址和端口號(hào)關(guān)聯(lián)。</p><p> 幾乎所有的Winsock函數(shù)都在套接字上進(jìn)行操作,因?yàn)樘捉幼质沁B接的句柄。連接的兩端都要使用一貫套接字,它們與平臺(tái)無(wú)關(guān)。套接字是雙通的,也就是說(shuō)在同一個(gè)套接字上既能夠接收也能
65、夠發(fā)送數(shù)據(jù)。</p><p> 套接字主要有兩種類(lèi)型,一種是流套接字(SOCK_STREAM),另外一種是數(shù)據(jù)報(bào)套接字(SOCK_DGRAM)。流套接字是為需要可靠連接的應(yīng)用程序設(shè)計(jì)的。這些程序經(jīng)常使用連續(xù)的數(shù)據(jù)流。用于這種類(lèi)型套接字的協(xié)議是TCP。流套接字最常用,一些眾所周知的協(xié)議如HTTP、TCP、SMTP、POP3等都使用它。</p><p> 數(shù)據(jù)報(bào)套接字使用UDP作為下層協(xié)議
66、,是無(wú)連接的,有一個(gè)最大緩沖區(qū)大小。它是為那些需要發(fā)送小數(shù)據(jù)包,并且對(duì)可靠性要求不高的應(yīng)用程序設(shè)計(jì)的。與套接字不同,數(shù)據(jù)包套接字并不保證數(shù)據(jù)會(huì)到達(dá)終端,也不保證他是以正確的順序到來(lái)的。數(shù)據(jù)報(bào)套接字傳輸效率相當(dāng)高,他經(jīng)常用于音頻或視頻應(yīng)用程序。對(duì)這些程序來(lái)說(shuō),速度比可靠性更加重要。</p><p> 另外,也存在一些不常用的套接字類(lèi)型,如原始套接字(raw socket)等。</p><p&g
67、t; 因?yàn)閃insock要兼容幾個(gè)協(xié)議,所以必須使用通用的尋址方式。TCP/IP使用IP地址和端口號(hào)來(lái)指定一個(gè)地址,但是其他協(xié)議也許采用不同的形式。如果Winsock強(qiáng)迫使用特定的尋址方式,添加其他協(xié)議就不大可能。Winsock的第一個(gè)版本使用sockaddr結(jié)構(gòu)來(lái)解決此問(wèn)題。</p><p> Struct sockaddr</p><p> { u_short sa_f
68、amily;</p><p> Char sa_data[14];</p><p><b> };</b></p><p> 如果僅僅使用互聯(lián)網(wǎng)地址家族(TCP/IP),Winsock已經(jīng)定義了sockaddr結(jié)構(gòu)的TCP/IP版本——sockaddr_in結(jié)構(gòu)。它們本質(zhì)上是相同的結(jié)構(gòu),但是第2個(gè)更容易操作。</p>
69、;<p> Struct sockaddr_in{</p><p> Short sin_family; // 地址家族</p><p> U_short sin_port; // 端口號(hào)</p><p> Struct in_addr sin_addr; //IP地址</p><p&
70、gt; Char sin_zero[8]; //空字節(jié),要設(shè)為0</p><p><b> };</b></p><p> Sin_addr是IP地址(32位),他被定義為一個(gè)聯(lián)合來(lái)處理整個(gè)32位的值,兩個(gè)16位部分或者每個(gè)字節(jié)單獨(dú)分開(kāi)。描述32位IP地址的in_addr結(jié)構(gòu)定義如下。</p><p> Struct
71、in_addr{</p><p><b> Union{</b></p><p> Struct{u_char s_b1,s_b2,s_b3.s_b4;}S_un_b;</p><p> Struct{u_short s_w1.s_w2;}s_un_w; </p><p> U_long s_addr;</
72、p><p><b> }s_un;</b></p><p><b> };</b></p><p> 使用winsock編程的一般步驟是比較固定的,如下:</p><p> 1 winsock庫(kù)的裝入、初始化和釋放</p><p> 2套接字的創(chuàng)建和關(guān)閉</p&g
73、t;<p> 3綁定套接字到指定的IP地址和端口號(hào)</p><p> 4設(shè)置套接字進(jìn)入監(jiān)聽(tīng)狀態(tài)</p><p><b> 5接受連接請(qǐng)求</b></p><p><b> 6收發(fā)數(shù)據(jù)</b></p><p> 服務(wù)器程序和客戶程序創(chuàng)建過(guò)程</p><p&g
74、t; 在現(xiàn)在的軟件開(kāi)發(fā)中,軟件開(kāi)發(fā)環(huán)境越來(lái)越多地涉及了網(wǎng)絡(luò)環(huán)境以及網(wǎng)絡(luò)下的C/S(Client/Server)模式。</p><p> C/S模式,即客戶機(jī)/服務(wù)器模式興起于20世紀(jì)90年代初,到90年代中期達(dá)到鼎盛時(shí)期。C/S模式是第一個(gè)應(yīng)用于網(wǎng)絡(luò)的模式,它在擁有友好的用戶界面的基礎(chǔ)上,利用分布技術(shù)成功地提高了執(zhí)行效率和系統(tǒng)容量,從而得到了廣泛的應(yīng)用。</p><p> C/S模式
75、的基本思想是把原先集中在一起的應(yīng)用劃分為功能不同的兩個(gè)部分,一個(gè)成為服務(wù)器軟件,用來(lái)響應(yīng)和提供固定的服務(wù);另一個(gè)被稱(chēng)為客戶機(jī)軟件,用來(lái)向服務(wù)器端提請(qǐng)和要求某種服務(wù)。運(yùn)行服務(wù)器軟件的計(jì)算機(jī)被簡(jiǎn)稱(chēng)為服務(wù)器,而運(yùn)行客戶機(jī)軟件的計(jì)算機(jī)被成為客戶機(jī),從這個(gè)意義上來(lái)說(shuō),客戶機(jī)和服務(wù)器都是軟件意義上的概念,同時(shí)也是相對(duì)的概念。例如,一臺(tái)計(jì)算機(jī)運(yùn)行了某個(gè)網(wǎng)絡(luò)應(yīng)用的服務(wù)器軟件,它就成為這個(gè)應(yīng)用的服務(wù)器;如果同時(shí)它還在運(yùn)行另外一個(gè)軟件的客戶機(jī)程序,則它同時(shí)
76、又是另外一個(gè)應(yīng)用的客戶機(jī)。不過(guò),因?yàn)榉?wù)器通常被設(shè)計(jì)為可以響應(yīng)多臺(tái)客戶機(jī)的請(qǐng)求,所以一般都工作在性能較強(qiáng)、配置較高的計(jì)算機(jī)上。</p><p> 服務(wù)器方創(chuàng)建監(jiān)聽(tīng)套接字,并為他關(guān)聯(lián)一個(gè)本地地址(指定IP地址和端口號(hào))。然后進(jìn)入監(jiān)聽(tīng)狀態(tài)準(zhǔn)備接收客戶的連接請(qǐng)求。為了接受客戶的連接請(qǐng)求,服務(wù)器必須調(diào)用accept函數(shù)。</p><p> 客戶方創(chuàng)建套接字后即可調(diào)用connect函數(shù)去試圖連接
77、服務(wù)器監(jiān)聽(tīng)套接字。當(dāng)服務(wù)起方接受函數(shù)返回后。連接函數(shù)也返回。此時(shí)客戶方使用socket函數(shù)創(chuàng)建套接字,服務(wù)器使用accept函數(shù)創(chuàng)建的套接字,雙方就可以進(jìn)行相互間的通信了。</p><p><b> 其過(guò)程圖如下: </b></p><p> 圖4-2 服務(wù)器程序和客戶程序的創(chuàng)建過(guò)程</p><p> 語(yǔ)音傳輸系統(tǒng)功能實(shí)現(xiàn)</p&g
78、t;<p> 本系統(tǒng)以語(yǔ)音聊天為例給出了應(yīng)用實(shí)例。</p><p><b> 語(yǔ)音模塊實(shí)現(xiàn)</b></p><p> 隨著計(jì)算機(jī)技術(shù)的發(fā)展,特別是海量存儲(chǔ)設(shè)備和大容量?jī)?nèi)存在PC機(jī)上的實(shí)現(xiàn),對(duì)音頻媒體進(jìn)行數(shù)字化處理便成為可能。數(shù)字化處理的核心是對(duì)音頻信息的采樣,通過(guò)對(duì)采集到的樣本進(jìn)行加工,達(dá)成各種效果,這是對(duì)音頻媒體數(shù)字化處理的基本含義。</p
79、><p> 基本的音頻數(shù)字化處理包括以下幾種。</p><p> 1、不同采樣率、頻率、通道數(shù)之間的變換和轉(zhuǎn)換。其中變換只是將其視為另外一種格式,而轉(zhuǎn)換通過(guò)重新采樣來(lái)進(jìn)行,其中還可以根據(jù)需要采用插值算法以補(bǔ)償失真。</p><p> 2、針對(duì)音頻數(shù)據(jù)本身進(jìn)行的各種變換,如淡入、淡出、音量調(diào)節(jié)等。</p><p> 3、通過(guò)數(shù)字濾波算法進(jìn)行
80、的變換,如高通、低通濾波器。</p><p> 但是最基本、最常用的還是聲音的錄制和播放。作為一個(gè)語(yǔ)音傳輸軟件,聲音的錄制、保存、傳輸和播放都是必不可少的,也是最重要的一環(huán)。本軟件需要語(yǔ)音輸入、輸出功能。這些技術(shù)的實(shí)現(xiàn)借助了Windows系統(tǒng)提供的底層音頻API。</p><p> MIDI的意思是樂(lè)器數(shù)字接口(Musical Instrument Digital Interface)
81、,它在微軟公司開(kāi)發(fā)Windows系統(tǒng)以前就有的一個(gè)用于電子鍵盤(pán)的標(biāo)準(zhǔn)。MIDI定義了一個(gè)傳輸和存儲(chǔ)音樂(lè)信息的協(xié)議。它在多媒體音頻中占有重要的位置,是播放和錄制音樂(lè)的國(guó)際標(biāo)準(zhǔn),它確定了連接音樂(lè)設(shè)備的電纜線、硬件和通信協(xié)議。</p><p> 下邊將介紹程序的具體實(shí)現(xiàn)。</p><p> 對(duì)于錄入和播放的聲音存儲(chǔ)時(shí)必須以特定的格式才可以,本軟件的格式定義如下:</p><
82、;p> m_soundFormat.wFormatTag=WAVE_FORMAT_PCM;</p><p> m_soundFormat.nChannels=1;</p><p> m_soundFormat.nSamplesPerSec=8000;</p><p> m_soundFormat.nAvgBytesPerSec=16000;</p
83、><p> m_soundFormat.nBlockAlign=2;</p><p> m_soundFormat.cbSize=0;</p><p> m_soundFormat.wBitsPerSample=16;</p><p> 只定義了聲音的格式是不夠的,要實(shí)現(xiàn)聲音的存儲(chǔ)還得對(duì)數(shù)據(jù)塊進(jìn)行定義,數(shù)據(jù)塊的定義采用如下結(jié)構(gòu)描述:<
84、;/p><p> m_pWaveHdrIn[0].lpData=m_cBufferIn;</p><p> m_pWaveHdrIn[0].dwBufferLength=MAX_BUFFER_SIZE;</p><p> m_pWaveHdrIn[0].dwBytesRecorded=0;</p><p> m_pWaveHdrIn[0]
85、.dwFlags=0;</p><p> 為了能夠進(jìn)行錄制和播放,還需要利用低級(jí)音頻函數(shù)——wave系列函數(shù)。對(duì)于播放過(guò)程,需要利用waveOutPrepareHeader函數(shù)準(zhǔn)備緩沖數(shù)據(jù)頭信息,然后調(diào)用函數(shù)waveOutWrite將音頻數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)寫(xiě)到播放設(shè)備中去進(jìn)行播放。對(duì)于錄制過(guò)程,需要先調(diào)用waveInPrepareHeader進(jìn)行接收數(shù)據(jù)緩沖區(qū)的準(zhǔn)備工作,然后調(diào)用waveInAddBuffer函
86、數(shù)添加錄制數(shù)據(jù)緩沖區(qū),最后調(diào)用函數(shù)waveInStart進(jìn)行錄制。下邊將列出這些函數(shù)在源程序中的應(yīng)用:</p><p> result=waveOutPrepareHeader(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR)); </p><p> if (result!= MMSYSERR_NOERROR) </p>
87、<p><b> {</b></p><p> AfxMessageBox(_T("Cannot OutPrepareHeader !"));</p><p><b> return;</b></p><p><b> };</b></p><
88、;p> If以后為信息出錯(cuò)警告,以下函數(shù)省略。</p><p> result=waveOutWrite(m_hWaveOut,&m_pWaveHdrOut[0],sizeof(WAVEHDR)); </p><p> result=waveInPrepareHeader(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR));
89、</p><p> result=waveInAddBuffer(m_hWaveIn,&m_pWaveHdrIn[0],sizeof(WAVEHDR)); </p><p> void CSound::Record()</p><p><b> {</b></p><p> waveInStart(m_h
90、WaveIn);//開(kāi)始錄音</p><p><b> }</b></p><p> 服務(wù)器和客戶端功能的實(shí)現(xiàn)</p><p> 服務(wù)器端與客戶端是程序與外界聯(lián)系的窗口。其主要功能實(shí)現(xiàn)如下:</p><p> if(temp.m_tag==1&&m_dlg->m_willchating==F
91、ALSE)</p><p> //如果有聲音過(guò)來(lái)并且本機(jī)的聲音設(shè)備已經(jīng)準(zhǔn)備好了則首先在本機(jī)發(fā)出聲音</p><p> if (m_aSessionOut != NULL)</p><p><b> {</b></p><p> msg->Serialize(*m_aSessionOut);</p>
92、;<p> m_aSessionOut->Flush();</p><p> return TRUE;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>&
93、lt;p> //對(duì)方關(guān)閉了連接 </p><p> int CClientSocket::GetLocalHostName(CString &sHostName)//獲得本地計(jì)算機(jī)名稱(chēng)</p><p> int CClientSocket::GetIpAddress(const CString &sHostName, CString &sIpAddre
94、ss)//獲得本地IP</p><p> 以上為部分功能實(shí)現(xiàn)。其他實(shí)現(xiàn)詳見(jiàn)源文件。 </p><p> 系統(tǒng)功能的測(cè)試與分析</p><p> 語(yǔ)音聊天程序使用介紹</p><p> 語(yǔ)音聊天程序的使用方法如下:</p><p> (1) 雙擊應(yīng)用程序圖標(biāo),將會(huì)彈出一窗口。</p><p
95、> (2) 在窗口相應(yīng)位置填寫(xiě)服務(wù)器IP地址和端口號(hào),默認(rèn)IP地址為本機(jī)IP地址,默認(rèn)端口號(hào)為4000。</p><p> (3) 如果是要建立服務(wù)器,點(diǎn)擊建立服務(wù)器按鈕,此時(shí)如果建立成功文本框會(huì)顯示“Server Has Been Set OK!”。如果失敗則會(huì)彈出警告窗口,請(qǐng)仔細(xì)檢查IP和端口號(hào)是否填寫(xiě)正確。服務(wù)端運(yùn)行界面見(jiàn)圖5-1。</p><p> (4) 如果要建立客
96、戶端,那么在填寫(xiě)好服務(wù)器IP和端口號(hào)后點(diǎn)擊連接服務(wù)器按鈕??蛻舳诉\(yùn)行界面見(jiàn)5-2。</p><p> (5) 此時(shí),大家可以進(jìn)行文本聊天。如果想進(jìn)行語(yǔ)音聊天那么請(qǐng)點(diǎn)擊語(yǔ)音聊天按鈕,當(dāng)然你要有相應(yīng)的硬件設(shè)備——音箱(耳機(jī))和麥克風(fēng)。那么現(xiàn)在你就可以進(jìn)行語(yǔ)音聊天了。</p><p> (6) 如果想停止語(yǔ)音聊天的話,那么請(qǐng)點(diǎn)擊停止語(yǔ)音聊天按鈕,此按鈕和語(yǔ)音聊天按鈕是同一個(gè)。</p&g
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 考試系統(tǒng)畢業(yè)設(shè)計(jì)--基于vc開(kāi)發(fā)與設(shè)計(jì)考試系統(tǒng)
- 考試系統(tǒng)畢業(yè)設(shè)計(jì)論文 基于vc開(kāi)發(fā)與設(shè)計(jì)考試系統(tǒng)
- 畢業(yè)設(shè)計(jì)---基于vc++的視頻采集系統(tǒng)的開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)論文基于vc管理系統(tǒng)開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)---基于vc++的8數(shù)碼游戲設(shè)計(jì)與開(kāi)發(fā)
- 畢業(yè)設(shè)計(jì)(論文)--基于vc++簡(jiǎn)易心電圖分析系統(tǒng)的開(kāi)發(fā)
- 基于vc的客房管理系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)開(kāi)題報(bào)告—基于vc++的餐飲管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 基于vc的簡(jiǎn)單即時(shí)通信軟件開(kāi)發(fā)【畢業(yè)設(shè)計(jì)】
- 基于vc的五子棋游戲軟件的設(shè)計(jì)與開(kāi)發(fā)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文-基于vc++的工資管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- qam傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- qam傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于無(wú)線傳輸?shù)臄?shù)據(jù)采集系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于無(wú)線傳輸?shù)臄?shù)據(jù)采集系統(tǒng)設(shè)計(jì)
- 電梯語(yǔ)音播報(bào)系統(tǒng)的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于vc++的點(diǎn)歌管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(論文)
- 基于單片機(jī)的數(shù)據(jù)采集與傳輸系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于android的esl管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)【畢業(yè)設(shè)計(jì)】
評(píng)論
0/150
提交評(píng)論