語(yǔ)音識(shí)別技術(shù)原理及應(yīng)用_第1頁(yè)
語(yǔ)音識(shí)別技術(shù)原理及應(yīng)用_第2頁(yè)
語(yǔ)音識(shí)別技術(shù)原理及應(yīng)用_第3頁(yè)
語(yǔ)音識(shí)別技術(shù)原理及應(yīng)用_第4頁(yè)
語(yǔ)音識(shí)別技術(shù)原理及應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、語(yǔ)音AgentNet的整體實(shí)現(xiàn)張宇偉第2 頁(yè)摘要:本文論述了一個(gè)人機(jī)對(duì)話應(yīng)用的實(shí)現(xiàn)(我命名它為 AgentNet)。其應(yīng)用實(shí)例為 一種新的整合了語(yǔ)音技術(shù)的智能代理網(wǎng)絡(luò)效勞。效勞器端開(kāi)發(fā)使用了微軟 SQL SERVER 7.0 技術(shù),客戶端使用了微軟Agent ,微軟 Speech SDK5 語(yǔ)音合成,和語(yǔ)音識(shí)別技術(shù)。網(wǎng)絡(luò)連接使用了 SOCKET 技術(shù),并論述了高層網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)。:關(guān)鍵詞 人機(jī)對(duì)話,MS-AGENT,語(yǔ)音合成,語(yǔ)音識(shí)別,網(wǎng)絡(luò)編程AbstractAbstractThis paper discuss a new actualization of man-machine conver

2、sation application,which is based on a modal of network service. And I name this service with the name ofAgentNet.The development of this service used Microsoft SQL SERVER 7.0. And the clientused the technology of Microsoft Agent, TTS (Text To Speech),SR(Speech Recognition).Alsothe client and the se

3、rver connect with SOCKET. On the SOCKET, the paper discuss thedevelopment of High-Level net protocol.KeyKey WordsWordsMan-Machine Conversation, MS-AGENT, TTS , SR ,Net Work Programming第3 頁(yè)目錄第一章概述.5.1.1 當(dāng)前人機(jī)對(duì)話模型分析 . 51.2當(dāng)前網(wǎng)絡(luò)應(yīng)用分析 .5.1.3AgentNet 概念.6.第二章語(yǔ)音合成及語(yǔ)音識(shí)別技術(shù).62.1 語(yǔ)音技術(shù)概述 .6.2.2 微軟語(yǔ)音技術(shù) .7.第三章 Agen

4、t 技術(shù)介紹 .8.3.1Microsoft Agent 技術(shù)介紹.8.3.2Microsoft Agent 技術(shù)應(yīng)用原理 .9第四章開(kāi)發(fā)系統(tǒng)介紹. 1.14. 1 Microsoft Development Studio 6.0.1 13. 2 Microsoft SQL SERVER 2000 .1.3第五章系統(tǒng)實(shí)現(xiàn). 1.45.1 需求分析.1.45.2 模塊分析. 客戶端模塊. 效勞器端模塊. 1.75.3 具體實(shí)現(xiàn)細(xì)節(jié).185.3.1 客戶端界面層. 客戶端核心層. 245.3.3 客戶端功能層. 255.3.4 客戶端網(wǎng)絡(luò)層. 295

5、.3.5 效勞器端網(wǎng)絡(luò)層. 315.3.6 效勞器端核心層. 335.3.7 效勞器端功能層.335.3.8 效勞器端數(shù)據(jù)層.34第4 頁(yè)第六章使用手冊(cè).36操作系統(tǒng)要求.36硬件要求.36效勞器端安裝.36客戶端支撐軟件的安裝.36第七章總結(jié)與展望.37參考文獻(xiàn).38第5 頁(yè)第一章概述1.1 當(dāng)前人機(jī)對(duì)話模型分析當(dāng)前研究人機(jī)界面正成為計(jì)算機(jī)行業(yè)的研究重點(diǎn)。現(xiàn)在的研究成果主要集中在讓電腦聽(tīng)懂說(shuō)話方面,舊 M 首先推出了語(yǔ)音識(shí)別技術(shù),微軟、摩托羅拉等公司也都 展開(kāi)了大量研究。成熟的語(yǔ)音平臺(tái)軟件包有微軟的Speech SDK、舊 M 的ViaVoice ,等等。目前全球人機(jī)界面研究的重點(diǎn),正從研究

6、計(jì)算機(jī)如何運(yùn)行轉(zhuǎn)向研究人的行 為,主要包括的領(lǐng)域有:語(yǔ)音上網(wǎng)、多模式對(duì)話管理、語(yǔ)音和視覺(jué)相結(jié)合、現(xiàn)有 芯片結(jié)合改造等。在英特爾中國(guó)研究中心,電腦已可進(jìn)行語(yǔ)音天氣、股票查詢, 你只要說(shuō)出股票名稱,它就會(huì)告訴你現(xiàn)在的股價(jià);而一位研究人員在寫(xiě)文章時(shí), 一邊用手寫(xiě)板寫(xiě),一邊說(shuō): 填加四行表格刪除兩行,而不必像過(guò)去那樣自己動(dòng)手圓表、不停地按刪除鍵。朱來(lái),人們?cè)谂c電腦交流時(shí),可能根本見(jiàn)不到電腦,出任英特爾人機(jī)界面總框架師的顏永紅博士說(shuō),無(wú)論你是坐在沙發(fā)上還是躺在床上, 只要手頭有一 個(gè)類似話筒、手寫(xiě)板或者遙控器之類的小玩意,就可以和電腦無(wú)線連接指揮它工 作。本文以下章節(jié)討論了微軟語(yǔ)音軟件的應(yīng)用。1.2 當(dāng)

7、前網(wǎng)絡(luò)應(yīng)用分析Internet 自 60 年代出現(xiàn)以來(lái)蓬勃開(kāi)展,近年來(lái)以驚人的速度增長(zhǎng) 一一連網(wǎng)主 機(jī)量每年翻一番,萬(wàn)維網(wǎng)站點(diǎn)每半年翻一番 .同時(shí)伴隨多媒體技術(shù)的飛速開(kāi)展, Internet 上多媒體應(yīng)用層出不窮,多媒體信息的數(shù)量與日俱增.Internet 已逐步由單 一的數(shù)據(jù)傳送網(wǎng)向數(shù)據(jù)、語(yǔ)音、圖像等多媒體信息的綜合傳輸網(wǎng)演化.第6 頁(yè)1.3 AgentNet 概念正當(dāng)計(jì)算機(jī)應(yīng)用,尤其是網(wǎng)絡(luò)應(yīng)用不斷增加的時(shí)候,計(jì)算機(jī)用戶被許多操作 所迷惑。對(duì)此,我們提出 AgentNet 的概念。AgentNet 它是一種新的人機(jī)界面的 嘗試。通過(guò)它,用戶可以用語(yǔ)音告訴 AgentNet 幫你工作。比方:你

8、說(shuō)一句喂,老 頭,有沒(méi)有郵件呀? 老頭,是AgentNet的客戶精靈的名字,你當(dāng)然可以任意設(shè)置它的名 字,AgentNet就會(huì)幫你收郵件。乂比方你說(shuō):“有沒(méi)有什么新聞呀? ,它就會(huì) 為你通報(bào)你感興趣的新聞,等等許多智能的功能。要實(shí)現(xiàn)我們的目標(biāo),我們?cè)谥悄艽鞟gent技術(shù)上,整合了語(yǔ)音合成和 語(yǔ)音識(shí)別技術(shù)。同時(shí)實(shí)現(xiàn)了一套自己開(kāi)發(fā)的網(wǎng)絡(luò)協(xié)議, 為以后增加新的智能效勞 提高了方便。實(shí)現(xiàn)的困難在丁:要把現(xiàn)成的許多較新的概念模型實(shí)現(xiàn)如智能代理的實(shí)現(xiàn) 等,并整合以往的各種成熟的技術(shù)如網(wǎng)絡(luò)模型的實(shí)現(xiàn)、語(yǔ)音技術(shù)的運(yùn)用等等。后繼章節(jié)將討論其具體問(wèn)題。第二章語(yǔ)音合成及語(yǔ)音識(shí)別技術(shù)2.1 語(yǔ)音技術(shù)概述語(yǔ)音識(shí)別技術(shù)

9、是信息領(lǐng)域的標(biāo)志技術(shù), 這項(xiàng)被科學(xué)家稱為 比登月還難的研 究,在計(jì)算機(jī)飛速開(kāi)展的帶動(dòng)下,有了重大的突破。語(yǔ)音識(shí)別技術(shù)日臻成熟,目 前正處丁向產(chǎn)品化邁進(jìn)的轉(zhuǎn)折階段。 語(yǔ)音識(shí)別作為人機(jī)對(duì)話的手段,在計(jì)算機(jī)日 益增長(zhǎng)的今天,愈發(fā)顯得出其在 IT 產(chǎn)業(yè)中的重要地位。人機(jī)對(duì)話 夢(mèng)想成真人機(jī)對(duì)話,讓電腦聽(tīng)懂人的語(yǔ)言是二十世紀(jì)人類的理想之一。對(duì)丁絕大多數(shù)人而言,電腦輸入絕不是一件令人愉快的事情,人們心中希望計(jì)算機(jī)是個(gè)能聽(tīng)會(huì)說(shuō)的工作伙伴,而不是今天這股乂聾乂啞毫無(wú)生氣的復(fù)雜機(jī)器。直接對(duì)計(jì)算 機(jī)發(fā)號(hào)施令,解放出我們的雙手,在任何狀態(tài)不只限丁坐在那里敲鍵盤下與 計(jì)算機(jī)進(jìn)行互動(dòng)交談式的操作是數(shù)字化生存時(shí)代的效率表達(dá)

10、和人性化工作方式 的完滿結(jié)合。Microsoft 公司的總裁比爾 蓋茨認(rèn)為:下一代的操作系統(tǒng)以及應(yīng)用 程度的用戶界面將摒棄鍵盤和鼠標(biāo),代之以真正意義的人第7 頁(yè)機(jī)對(duì)話。從另一方面看,微電子技術(shù)開(kāi)展到今天,摩爾定理仍驚人的準(zhǔn)確,計(jì)算機(jī)和 電子通信設(shè)備日益微型化。在小型化minianturization的趨勢(shì)下,袖珍型的掌 上電腦已有了 實(shí)驗(yàn)室產(chǎn)品不久將出現(xiàn)在你我的手中,由此不難看到,計(jì)算機(jī)將 會(huì)微縮成腕上的手表般大小。顯而易見(jiàn),如假設(shè)仍采用鍵盤輸入是不可能的,還有 其它類似控制儀器或通訊設(shè)備的鍵盤,也將在微型化的潮流之中成為眾欠之的遭 到淘汰。由此,語(yǔ)音輸入便成為唯一的最正確選擇。人們將完全拋棄

11、鍵盤,對(duì)著手 表大小的腕上計(jì)算機(jī)或,輕聲說(shuō)出想要計(jì)算機(jī)完成的工作或是說(shuō)出要撥打的號(hào)碼。 乙切盡在數(shù)!中。有限的詞匯無(wú)限的應(yīng)用語(yǔ)言是人類交流的第一手段。而語(yǔ)言本身也正隨著社會(huì)的開(kāi)展而不斷地更新變異,人們終其一生都在自覺(jué)或不自覺(jué)地進(jìn)行著語(yǔ)言的學(xué)習(xí)和更新。無(wú)疑這種變化將成為計(jì)算機(jī)語(yǔ)音識(shí)別的重大難點(diǎn)。隨心所欲地同計(jì)算機(jī)交談是人類追求機(jī) 器智能化的最高境界,這種 智能聽(tīng)寫(xiě)機(jī)構(gòu)成的系統(tǒng)是無(wú)限詞匯無(wú)限命令集 的語(yǔ)音識(shí)別,其技術(shù)難度遠(yuǎn)高丁 有限命令集,就目前的研究水平,研制一些有 限詞匯有限命令集的專聽(tīng)寫(xiě)用系統(tǒng)是盡快將語(yǔ)音技術(shù)擴(kuò)大應(yīng)用范圍、推向市場(chǎng)的快捷途徑。2.2 微軟語(yǔ)音技術(shù)Speech 概述微軟 Spe

12、ech SDK 5.0 是微軟公司的語(yǔ)音開(kāi)發(fā)軟件包工具。其工具、信息、引擎和樣品幫助,與微軟公司 API 5.0 結(jié)合起來(lái)成為一個(gè)軟 件包。SpeechSDK 也包括微軟公司的先進(jìn)的語(yǔ)音識(shí)別引擎和微軟公司的 Concatenative 的語(yǔ)音合成引擎以前代號(hào)為的“ wistler SAPI 5.0 由 2 個(gè)接口:應(yīng)用程序設(shè)計(jì)接口API和設(shè)備驅(qū)動(dòng)程序接口 DDI 構(gòu)成。SAPI的 5.0 API 顯著地減少了使用語(yǔ)音識(shí)別的應(yīng)用和綜合的代碼。SAPI 的 5.0 DDI 和 API 除掉了許多類似在語(yǔ)音合成和識(shí)別引擎的多線程,第8 頁(yè)在聲音的裝置管理和方便的應(yīng)用的實(shí)現(xiàn)細(xì)節(jié)APIAPI 事件 Sp

13、eech SDK 語(yǔ)音合成和語(yǔ)音識(shí)別與應(yīng)用程序的接口,是通過(guò)接收API 事件完成。例如,正文的詞,或通用的短語(yǔ)被識(shí)別的時(shí)候成生了 API 事件。語(yǔ)音合成 APIAPI應(yīng)用程序使用接口 - ISpVoice,使 API 完成根本語(yǔ)音合成。應(yīng)用程序通過(guò)具有CLSID_SpVoice 的 COM CoCreateInstance 方法得到ISpVoice 接口得到 COM 接口指針。應(yīng)用程序能通過(guò) ISpVoice: Speak 的方法合成語(yǔ)音,將把要合成的語(yǔ)音的文 本通過(guò)參數(shù)傳遞給 Speech SDK。語(yǔ)音識(shí)別 APIAPI就像 IspVoice 作為語(yǔ)音合成 API 一樣,ISpRecoCon

14、text 是給語(yǔ)音識(shí)別的主 要的接口對(duì)象指針。通過(guò)設(shè)置NotifySink 識(shí)別事件陷阱池,應(yīng)用程序可以捕獲語(yǔ)音識(shí)別完成事件。第三章Agent技術(shù)介紹3.1 Microsoft Agent技術(shù)介紹Microsoft Agent 最早出現(xiàn)在 Office 95 中, 主要用丁 Office 的幫助, 微軟稱 之為“Office助手-是在一個(gè)小窗口內(nèi)播放各種幽默的卡通動(dòng)畫(huà),而且這些動(dòng) 畫(huà)是隨特定的操作不同而改變,這就給使用電腦的人增添了許多樂(lè)趣。不過(guò)這種方式在現(xiàn)在看來(lái)是很“簡(jiǎn)陋的,不直觀也不形象生動(dòng)。ApplicationApplicationSAP I RuntimeRecognitionEng

15、meSynthesisEngiine第9 頁(yè)1997 年微軟推出 Agent 1.5 版,從界面上徹底脫離了窗口的限制,而變得非 常形象生動(dòng),而且其核心采用了基丁 COM 的 ActiveX 控件方式,這就意味著 Agent 可以在 Visual C+、VisualBasic、Html 以及所有支持 ActiveX 的開(kāi)發(fā)語(yǔ)言很方 便的進(jìn)行二次開(kāi)發(fā)。同時(shí)其它領(lǐng)域的相關(guān)技術(shù)也很好的應(yīng)用到Agent 中來(lái),如語(yǔ)音合成、語(yǔ)音識(shí)別等技術(shù)這里需要特別提出的是有關(guān)中文語(yǔ)音合成和識(shí)別至盡 尚未應(yīng)用丁Agent,不能不說(shuō)是一種遺憾。這樣 Agent 就轉(zhuǎn)變?yōu)樾乱淮鷷?huì)說(shuō)能聽(tīng) 的智能界面,其深遠(yuǎn)意義顯而易見(jiàn)。伴隨

16、著新世紀(jì)的到來(lái),微軟發(fā)布的 Office2000 中徹底的應(yīng)用了 Agent 的技術(shù) 應(yīng)該說(shuō)基丁 Agent 2.0,聽(tīng)說(shuō)英文版的 Office 2000 可支持語(yǔ)音提示和語(yǔ)音命令識(shí) 別,而且微軟的新一代操作系統(tǒng) Windows2000 完全內(nèi)置了 Agent 的組件系統(tǒng), 可見(jiàn)微軟對(duì) Agent 抱有極大的興趣的??傊?Agent 是一個(gè)非常有開(kāi)展前途的技術(shù),目前國(guó)外已有不少基丁 Agent 的 軟件,如TalkMail 等,國(guó)內(nèi)也有局部英語(yǔ)學(xué)習(xí)軟件使用了Agent 的技術(shù)。但是由丁 Agent 的語(yǔ)音模塊只使用到了 Speech Sdk 4.0 ,語(yǔ)音模塊不支持中文,語(yǔ) 音識(shí)別率低。所以,

17、本設(shè)計(jì)沒(méi)有使用Agent 自帶的語(yǔ)音技術(shù),而采用最新的語(yǔ)音 Speech Sdk 5.0 的底層調(diào)用,支持簡(jiǎn)體中文,合成和識(shí)別。而對(duì)丁 Agent 界 面模塊使用到了動(dòng)畫(huà)技術(shù),作為人機(jī)交流的界面。3.2 Microsoft Agent 技術(shù)應(yīng)用原理對(duì) Agent 編程的方法主要有使用 VB,VC 等語(yǔ)言進(jìn)行 ActiveX 調(diào)用,除此之 外還有直接通過(guò)VC 進(jìn)行 COM 編程調(diào)用。在 VB 中調(diào)用 Agent 是最簡(jiǎn)單不過(guò)了, 但由丁 VB 程序本身存在諸多缺陷,彳艮難在實(shí)際中應(yīng)用。而在 VC 中,由丁 Agent 內(nèi)部完全采用了 UNICODE 編碼,同時(shí)還要處理各 種繁雜的 COM 接口,

18、存在一定的難度,但效率較高。:原理介紹應(yīng)用程序和 Agent Server 的連接是通過(guò) COM 調(diào)用來(lái)實(shí)現(xiàn)的。將一個(gè) Agent 控制加載相應(yīng)的動(dòng)畫(huà)和語(yǔ)音碼我們稱之為“角色,一般使用COM 調(diào)用創(chuàng)立一個(gè) Agent 角色,第10頁(yè)應(yīng)用程序和 AgentServer 的連接方法使用 COK 調(diào)用創(chuàng)立一個(gè)Agentfe 方法第11頁(yè)第四章開(kāi)發(fā)系統(tǒng)介紹4. 1 Microsoft Development Studio 6.0本軟件的開(kāi)發(fā)使用了 微軟的 Microsoft Development Studio 6.0 中的一員VC+ 6.0?,F(xiàn)大概介紹一下 VC+編程的特點(diǎn)。Visual C+作為一

19、個(gè)功能非常強(qiáng)大的可視化應(yīng)用程序開(kāi)發(fā)工具,是計(jì)算機(jī) 界公認(rèn)的最優(yōu)秀的應(yīng)用開(kāi)發(fā)工具之一。Microsoft 的根本類庫(kù) MFC 使得開(kāi)發(fā)Windows 應(yīng)用程序比以往任何時(shí)候都要容易。理解 VC 工程Visual C+作為一種程序設(shè)計(jì)語(yǔ)言,它同時(shí)也是一個(gè)集成開(kāi)發(fā)工具,提供 了軟件代碼自動(dòng)生成和可視化的資源編輯功能。在 VC 中,應(yīng)用程序是以 Project 的形式存在的,Project 文件以.dsp 擴(kuò)展名,在 Workspace文件中可以包含多個(gè) Project,由 Workspace 文件對(duì)它們進(jìn)行統(tǒng)一的 協(xié)調(diào)和管理。MFC編程特點(diǎn)近幾年來(lái),面向?qū)ο蠹夹g(shù)無(wú)論是在理論還是實(shí)踐上都在飛速地開(kāi)展。

20、面向?qū)ο蠹夹g(shù)中最重要的就是“對(duì)象的概念,它把現(xiàn)實(shí)世界中的氣球、自行車等客觀 實(shí)體抽象成程序中的“對(duì)象。這種“對(duì)象具有一定的屆性和方法,這里的屆 性指對(duì)象本身的各種特性參數(shù)。如氣球的體積,自行車的長(zhǎng)度等,而方法是指對(duì)象本身所能執(zhí)行的功能,如氣球能飛,自行車能滾動(dòng)等。一個(gè)具體的對(duì)象可以有 許多的屆性和方法,面向?qū)ο蠹夹g(shù)的重要特點(diǎn)就是對(duì)象的封裝性,對(duì)丁外界而言,并不需要知道對(duì)象有哪些屆性,也不需要知道對(duì)象本身的方法是如何實(shí)現(xiàn)的,而只需要調(diào)用對(duì)象所提供的方法來(lái)完成特定的功能。從這里我們可以看出,當(dāng)把面向?qū)ο蠹夹g(shù)應(yīng)用到程序設(shè)計(jì)中時(shí),程序員只是在編寫(xiě)對(duì)象方法時(shí)才需要關(guān)心對(duì)象 本身的細(xì)節(jié)問(wèn)題,大局部的時(shí)間是

21、放在對(duì)對(duì)象的方法的調(diào)用上,組織這些對(duì)象進(jìn)行協(xié)同工作。MFC 的英文全稱是 Microsoft Fundation Classeq 即微軟的根本類庫(kù), MFC的本質(zhì)就是一個(gè)包含了許多微軟公司已經(jīng)定義好的對(duì)象的類庫(kù),我們知道,雖然我們要編寫(xiě)的程序在功能上是千差萬(wàn)別的,但從本質(zhì)上來(lái)講,都可以化歸為用戶第12頁(yè)界面的設(shè)計(jì),對(duì)文件的操作,多媒體的使用,數(shù)據(jù)庫(kù)的訪問(wèn)等等一些最主要的方 面。這一點(diǎn)正是微軟提供 MFC 類庫(kù)最重要的原因,在這個(gè)類庫(kù)中包含了一白多 個(gè)程序開(kāi)發(fā)過(guò)程中最常用到的對(duì)象。在進(jìn)行程序設(shè)計(jì)的時(shí)候,如果類庫(kù)中的某個(gè) 對(duì)象能完成所需要的功能,這時(shí)我們只要簡(jiǎn)單地調(diào)用已有對(duì)象的方法就可以了。我們還

22、可以利用面向?qū)ο蠹夹g(shù)中很重要的“繼承方法從類庫(kù)中的已有對(duì)象派生 出我們自己的對(duì)象,這時(shí)派生出來(lái)的對(duì)象除了具有類庫(kù)中的對(duì)象的特性和功能之 外,還可以由我們自己根據(jù)需要加上所需的特性和方法,產(chǎn)生一個(gè)更專門的,功能更為強(qiáng)大的對(duì)象。當(dāng)然,你也可以在程序中創(chuàng)立全新的對(duì)象,并根據(jù)需要不斷完善對(duì)象的功能。正是由丁 MFC 編程方法充分利用了面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn),它使得我們編程 時(shí)極少需要關(guān)心對(duì)象方法的實(shí)現(xiàn)細(xì)節(jié),同時(shí)類庫(kù)中的各種對(duì)象的強(qiáng)大功能足以完 成我們程序中的絕大局部所需功能,這使得應(yīng)用程序中程序員所需要編寫(xiě)的代碼 大為減少,有力地保證了程序的良好的可調(diào)試性。最后要指出的是 MFC 類庫(kù)在提供的對(duì)象的各種屆

23、性和方法都是經(jīng)過(guò)謹(jǐn)慎的 編寫(xiě)和嚴(yán)格的測(cè)試,可靠性很高,這就保證了使用 MFC 類庫(kù)不會(huì)影響程序的可 靠性和正確性。程序結(jié)構(gòu)剖析下面為一個(gè)表示程序中的主要類之間的關(guān)系的圖表:這個(gè)圖表表示了使用 MFC 方式的應(yīng)用程序的四個(gè)主要類之間的關(guān)系,從中 可以看出,CMYAPP類主要的作用是用來(lái)處理消息的,它統(tǒng)一管理程序收到的 所有的消息,然后把消息分配到相應(yīng)的對(duì)象。CMAINFRAME 是 CMYVIEW 的父類,也就是說(shuō)視窗VIEW 顯示在主框窗 MAINFRAME 的客戶區(qū)中。類第13頁(yè)CMYVIEW 的作用是顯示數(shù)據(jù),而數(shù)據(jù)的來(lái)源是類 CMYDOC,在 MFC 程序中, 程序的數(shù)據(jù)是放在文檔當(dāng)中的

24、,而顯示數(shù)據(jù)那么是利用視窗方式,文檔與視窗別離 帶來(lái)的好處就是一個(gè)文檔可以同時(shí)具有多個(gè)視窗,每個(gè)視窗只顯示文檔中的一部分?jǐn)?shù)據(jù),或者以特定的風(fēng)格顯示文檔中的數(shù)據(jù)。 文檔與視窗別離的另一個(gè)好處就 是在程序中可以處理多個(gè)文檔,通過(guò)對(duì)不同的視窗的處理到達(dá)對(duì)不同的文檔分別 處理的目的。使用過(guò)傳統(tǒng)的 WINDOWS 編程方法的人都知道,在應(yīng)用程序中有一個(gè)重要 的函數(shù) WINMAIN (),這個(gè)函數(shù)是應(yīng)用程序的根底,用戶的操作所產(chǎn)生的消息 正是經(jīng)過(guò)這個(gè)函數(shù)的處理派送到對(duì)應(yīng)的對(duì)象中進(jìn)行處理。而在MFC 方式的WINDOWS 應(yīng)用程序中,用來(lái)處理消息的是系統(tǒng)自動(dòng)生成的MFC 中的類CWINAPP 的派生類 CM

25、YAPP。3. 2 Microsoft SQL SERVER 2000使用 SQL Server 2000 的最新增強(qiáng)功能開(kāi)發(fā)數(shù)據(jù)庫(kù)解決方案。建立在 SQL Server 7.0 可擴(kuò)展根底上的 SQL Server 2000 代表著下一代 Microsoft .NET Enterprise Servers (企業(yè)效勞器)數(shù)據(jù)庫(kù)的開(kāi)展趨勢(shì)。 SQL Server 2000 是為創(chuàng)立 可伸縮電子商務(wù)、在線商務(wù)和數(shù)據(jù)倉(cāng)儲(chǔ)解決方案而設(shè)計(jì)的真正意義上的關(guān)系型數(shù) 據(jù)庫(kù)管理與分析系統(tǒng)。SQLSQL ServerServer 20002000 的新特性平安的應(yīng)用程序管理。更高的可伸縮性和可靠性。數(shù)據(jù)倉(cāng)庫(kù)解決

26、方案的可伸 縮性。最大的正常運(yùn)行時(shí)間和可靠性。 集成的和可擴(kuò)展的分析效勞。簡(jiǎn)單的管理 和調(diào)整。增強(qiáng)和簡(jiǎn)化的事務(wù)處理SQL (T SQL)開(kāi)發(fā)和調(diào)試。靈活的和可擴(kuò) 展的數(shù)據(jù)轉(zhuǎn)換。第五章系統(tǒng)實(shí)現(xiàn)5.1 需求分析本設(shè)計(jì)的目標(biāo)是利用語(yǔ)音技術(shù)和動(dòng)畫(huà)技術(shù)作為與用戶交流的主要人機(jī)界面。用戶通過(guò)語(yǔ)音識(shí)別控制程序運(yùn)行, 程序通過(guò)語(yǔ)音合成通知現(xiàn)在運(yùn)行狀況。 而作為 被控制的對(duì)象是一個(gè)網(wǎng)絡(luò)效勞模型。用戶登陸上 AgentNet 效勞器上以后,可以要求讀新聞,與同時(shí)登陸到 AgentNet 的其他客戶通訊等等。在客戶端用戶可用語(yǔ)音控制去完成接收電子郵件等日常工作。第14頁(yè)總體軟硬件結(jié)構(gòu)示意圖5.2 模塊分析5.2.1

27、5.2.1 陪戶端模塊目標(biāo):用戶登陸 AgentNet 后,出現(xiàn) Agent 動(dòng)畫(huà)界面,所有的功能可通過(guò)語(yǔ) 音控制,也可通過(guò)傳統(tǒng)界面控制。功能包括:登陸、系統(tǒng)設(shè)置、人機(jī)聊天、讀文 本、郵件、看 AgentNet 新聞、通訊可與同時(shí)登陸到 AgentNet 的客戶通訊等。第15頁(yè)網(wǎng)絡(luò)JE客戶端模塊分析共分 3 層界面層分析:層模塊名模塊輸入模塊輸出模塊輸出對(duì)像備注界面層語(yǔ)音識(shí)別(SR)用戶通過(guò)話筒的普通話語(yǔ)言命令號(hào)核心處理層命令號(hào)由srgrammar.xml的 xml 文件定義,核心層的接收命令并執(zhí)行。語(yǔ)音合成核心層的合成后通用戶聲卡默認(rèn)以簡(jiǎn)客戶端模塊圖界面JE核心房功能層用戶認(rèn)證人機(jī)再天郵件其

28、它第16頁(yè)(TTS)字符串過(guò)聲卡以聲音流輸出(soundstream)所連音響體中文合成語(yǔ)音。Agent 界面核心層的Agent 動(dòng)作命令A(yù)gent 動(dòng)畫(huà)動(dòng)作用戶界面?zhèn)鹘y(tǒng)界面按鈕、菜單Windows 窗口等核心處理層響應(yīng)傳統(tǒng)的菜單、鼠標(biāo)事件,顯示窗口核心層分析層模塊名模塊輸入模塊輸出模塊輸出對(duì)像備注核心層核心處理界面層的語(yǔ)音命令號(hào),菜單、鼠標(biāo)等事件,功能層動(dòng)作成后的事件到界面層 的需要語(yǔ)音合 成字符串、Agent 動(dòng)作命 令、Windows 窗 口界面元素。功 能層的各功能 調(diào)度界面層功能層此模塊處理核心調(diào)度。所有的 其他模塊都受到 它的控制。功能層層模塊名模塊輸入模塊輸出模塊輸出對(duì)像備注功能

29、層用戶認(rèn)證用戶名,密碼是否認(rèn)證通過(guò)結(jié)果由核心層處理賬號(hào)信息由核心層從傳統(tǒng)界面獲得設(shè)置效勞器 ip為核心層核心層信息由核第17頁(yè)地址、郵件賬號(hào)信息等提供必要的信息心層從傳統(tǒng)界面獲得,并寫(xiě)到注冊(cè)表郵件收郵件新郵件信息結(jié)果由核心層處理輸出到界面層語(yǔ)音識(shí)別收郵件,語(yǔ)音合成讀郵件。通訊網(wǎng)絡(luò)層的 其他客戶登陸 消息、其他客戶 發(fā)來(lái)的訊息要顯示的 信息 , 及要合成 的語(yǔ)音信息字 符串結(jié)果由核心層處理輸出到界面層與網(wǎng)絡(luò)層交互信息,信息顯示到界面層新聞網(wǎng)絡(luò)層的新聞信息要合成的新聞信息字符串結(jié)果由核心層處理輸出到界面層與網(wǎng)絡(luò)層交互信息,信息顯示到界面層人機(jī)聊天命令核心層傳來(lái)的語(yǔ)音識(shí)別 聊天命令要合成的語(yǔ)音信息字

30、符 串結(jié)果由核心層處理輸出到界面層有限的命令反映。.2 |艮務(wù)器端模塊目標(biāo):每個(gè)客戶端必須先登陸到 AgentNet 效勞器,才能繼續(xù)使用,這里需 要賬號(hào)認(rèn)證。每個(gè)效勞器端的事件,都要被紀(jì)錄,這里需要事件管理。效勞器端 提供一個(gè)新聞效勞。當(dāng)客戶端要求看最新的新聞時(shí),發(fā)新聞給客戶端。這里要有新聞管理,用丁添加、刪除、修改新聞。客戶端發(fā)過(guò)來(lái)的網(wǎng)絡(luò)訊息,以及效勞器端發(fā)給客戶端的訊息, 都由網(wǎng)絡(luò)層實(shí)所有具體功能的實(shí)現(xiàn)在功能層第18頁(yè)核心層處理各層的調(diào)度。由丁本設(shè)計(jì)主要目標(biāo)表達(dá)在整個(gè)結(jié)構(gòu)的架設(shè)。 到現(xiàn)在為止,實(shí)現(xiàn)的是根本的 效勞。但以后可以很方便的在其根本結(jié)構(gòu)上增加新效勞功能。相對(duì)丁客戶

31、端,效勞器端模塊結(jié)構(gòu)不具體展開(kāi)。詳細(xì)信息可到具體實(shí)現(xiàn)小節(jié) 觀察。5.3 具體實(shí)現(xiàn)細(xì)節(jié).1 陪戶端界面層語(yǔ)音識(shí)別SR模塊SRSR 中定義的成員變量有:CComPtr m_cpEngine;/SR engine 接口CComPtr m_cpRecoCtxt;/recognize context 接口第19頁(yè)CComPtr m_cpCmdGrammar; /grammar 接口成員函數(shù):InitSR(); 初始化ProcessRecoEvent();事件響應(yīng)函數(shù)ExecuteSRCommand();執(zhí)行語(yǔ)音命令ReleaseSR();釋放接口InitSR()InitSR() 函數(shù)中初

32、始化了 COM 接口、SR engine 接口、recognize context 接口、grammar接口,這些都是 COM 接口指針。其中 m_cpEnginem_cpEngine 為主 SR Engine 接口,程序使用它作為與其他模塊的連接。m_cpRecoCtxtm_cpRecoCtxt 為 recongnize事件上下文,通過(guò)它,當(dāng)識(shí)別事件發(fā)生的時(shí)候,可以獲得具體識(shí)別出來(lái)的文字或 命令號(hào)。m_cpCmdGrammarm_cpCmdGrammar 為命令接口。由丁本設(shè)計(jì)的語(yǔ)音識(shí)別只涉及到有 限命令詞匯,所以在這里定義了命令接口。對(duì)丁一些其它需要口述板的應(yīng)用可以 定義口述接口,以識(shí)別無(wú)

33、限命令集既自然語(yǔ)言識(shí)別。當(dāng)然定義有限命令可以大大提高識(shí)別率。m_cpCmdGrammarm_cpCmdGrammar 命令接口的初始化是通過(guò)載入一個(gè)名為 srgrammar.cfg語(yǔ)法規(guī)那么文件而完成。這個(gè)文件由一個(gè)名為 srgrammar.xml 的 XML 文件通 過(guò)專用的語(yǔ)法產(chǎn)生程序產(chǎn)生。在 srgrammar.xml 內(nèi)具體定義了需要識(shí)別的中文命 令。如: 你好 在這里定義了一些用戶自定義事件#define WM_RECOEVENT WM_USER+100并在 MESSAGE_MAP 內(nèi)定義處理函數(shù)語(yǔ)音識(shí)別事件消息處理ON_MESSAGE(WM_RECOEVENT,ProcessRec

34、oEvent)當(dāng)識(shí)別結(jié)束時(shí),程序主線程接收到此WM_RECOEVENT 消息,運(yùn)行 處理 函數(shù)ProcessRecoEvent()。此函數(shù)在確定是語(yǔ)音識(shí)別事件成生后,運(yùn)行 ExecuteSRCommand()函數(shù)。第20頁(yè)ExecuteSRCommand(羚辨哪個(gè)命令被識(shí)別,并執(zhí)行響應(yīng)命令處理函數(shù)。語(yǔ)法規(guī)那么與語(yǔ)法樹(shù)語(yǔ)法規(guī)那么是 SAPI 5.0 的一個(gè)重要的元素。它限制了在語(yǔ)音識(shí)別處理中,可 能的被識(shí)別的字或句子成分。短語(yǔ)或句用每個(gè)語(yǔ)法規(guī)那么成分來(lái)決定識(shí)別通路。例如,核查在描述旅行方案的句子:“我想開(kāi)車從北京到上海。請(qǐng)注意這里有決定結(jié)果的信息元素存在。就這個(gè)例子來(lái)說(shuō),有個(gè)人在方案從北京開(kāi)車到

35、上海。這個(gè)非常簡(jiǎn)單的例子說(shuō)明了一個(gè)可能非常復(fù)雜的問(wèn)題。不限制方法、方向和旅行目的地,產(chǎn)生的旅行方案將是任選的無(wú)限數(shù)。作為結(jié)果產(chǎn)生的有效信息能通過(guò)加以限制的方法選擇決定。第21頁(yè)下為這個(gè)例子的具體分析:一個(gè)誨音識(shí)別的例子識(shí)別統(tǒng)果:方法:開(kāi)軍原城市:北京目的城而上詞我想開(kāi)車 從 北京到 上海方法目的城市第22頁(yè)GRAMMAR,DEFINE)CID NAME/天津# VAL=1102/?/DEFINE?KOLE JIAffE=Tra.vle TOPLEVEL= ACTIVE 開(kāi)車P VALLFly#乘飛機(jī) AP MAL=*北京。北京P VAL=* 上海*上海 P VAL=*南京今南京成?P VAL=

36、*夭津。夭津JK/OPHAL北京V北京/P, PVAL二,上澹。上海 P VAL 二*南宗。南京/P, PVAL=*天津。天津 5 第23頁(yè)語(yǔ)音合成(TT0 模塊 ISPVQIW*語(yǔ)音合成模塊相對(duì)簡(jiǎn)單。它定義的變量有:/tts 語(yǔ)音合成接口ISpVoice *m_cpTTSVoice;成員函數(shù):InitTTS(); 初始化AgentSpeak(Cstring strSpeak); 合成ReleaseTTS();釋放接口先使用 InitTTS()初始化,它初始化了 COM 接口,并設(shè)置了合成的男聲 的語(yǔ)速,默認(rèn)把它設(shè)為+2 ,語(yǔ)速快一點(diǎn),相對(duì)覺(jué)得自然一點(diǎn)。然后核心層關(guān)心的就是AgentSpeak

37、(CString strSpeak)這個(gè)函數(shù)了。核心層把欲合成的字符申作為參數(shù)提交給AgentSpeak,即合成了語(yǔ)音。AgentAgent 界面模塊|lA.EflitClB.mct erEWriteProfileString(strServerSection,ServerIpAddress,ServerPage.m_strServerlpAddress);讀效勞器 ip 地址m_stuSetup.strServerIpAddress=pApp-GetProfileString(strServerSection,ServerIpAddress);由丁篇幅有限,具體請(qǐng)看代碼。第26頁(yè)郵件模塊這里

38、用到了兩個(gè)類CPop3CPop3 類用丁郵件處理,CMailMessageCMailMessage 用丁郵件內(nèi)容解碼。在初始化后,用CPop3:SetServerProperties( LPCTSTR sServerHostName, UINT nPort)設(shè)定郵件 效勞器參數(shù)。用CPop3:SetUserProperties( LPCTSTR sUsername, LPCTSTR sPassword )設(shè)定用 戶賬號(hào)參數(shù)。這些參數(shù)是從設(shè)置模塊讀過(guò)來(lái)的。然后CPop3:Connect(),CPop3:GetNumMessage()獲得當(dāng)前郵箱的郵件數(shù)。CPop3:GetMessage( UIN

39、T nMsg, CMailMessage* msg)獲得郵件內(nèi)容放到msgCPop3:Disconnect()斷開(kāi)連接。第27頁(yè)通過(guò)CMailMessage:EncodeBody()可解碼郵件內(nèi)容。郵件的具體內(nèi)容在解碼后放在成員變量中。理點(diǎn)一-多線程由丁在處理收郵件功能時(shí),假設(shè)程序使單線程的,網(wǎng)絡(luò)延時(shí)必定使主線程阻塞。 所以當(dāng)核心模塊調(diào)用郵件模塊必須開(kāi)一個(gè)新線層。多線層編程細(xì)節(jié)在 Windows 的一個(gè)進(jìn)程內(nèi),包含一個(gè)或多個(gè)線程。線程是指進(jìn)程的一條執(zhí)行 路徑,它包含獨(dú)立的堆棧和 CPUS 存器狀態(tài),每個(gè)線程共享所有的進(jìn)程資源,包 括翻開(kāi)的文件、信號(hào)標(biāo)識(shí)及動(dòng)態(tài)分配的內(nèi)存等等。一個(gè)進(jìn)程內(nèi)的所有線程

40、使用同一個(gè) 32 位地址空間,而這些線程的執(zhí)行由系統(tǒng)調(diào)度程序控制,調(diào)度程序決定哪 個(gè)線程可執(zhí)行以及什么時(shí)候執(zhí)行線程。 線程有優(yōu)先級(jí)別,優(yōu)先權(quán)較低的線程必須 等到優(yōu)先權(quán)較高的線程執(zhí)行完任務(wù)后再執(zhí)行。在多處理器的機(jī)器上,調(diào)度程序可 將多個(gè)線程放到不同的處理器上去運(yùn)行,這樣就可使處理器的任務(wù)平衡,也提高了系統(tǒng)的運(yùn)行效率。Visual C+ 5.0 提供了 Windows 應(yīng)用程序的集成開(kāi)發(fā)環(huán)境DeveloperStudio。在這個(gè)環(huán)境里,用戶既可以編寫(xiě) C 風(fēng)格的 32 位 Win32 應(yīng)用程序,也可 以利用 MF 以庫(kù)編寫(xiě) C+以格的應(yīng)用程序,二者各有其優(yōu)點(diǎn):基丁 Win32 的應(yīng)用 程序執(zhí)行代碼

41、小巧,運(yùn)行效率高,但要求程序員編寫(xiě)的代碼較多,且需要管理所 有系統(tǒng)提供應(yīng)程序的資源;而基丁 MFC 類庫(kù)的應(yīng)用程序可以快速建立起應(yīng)用程序,類庫(kù)為程序員提供了大量的封裝類,而且Developer Studio 為程序員提供了一些工具來(lái)管理用戶源程序, 其缺點(diǎn)是類庫(kù)代碼很龐大, 應(yīng)用程序的執(zhí)行代碼 離不開(kāi)這些代碼。由丁使用類庫(kù)所帶來(lái)的快速、 簡(jiǎn)捷和功能強(qiáng)大等優(yōu)越性, 因此, 除非有特殊的需要, 否那么 VisualC+提倡使用 MFC!庫(kù)進(jìn)行應(yīng)用程序開(kāi)發(fā)。收郵件線程的具體實(shí)現(xiàn)主線程和收郵件線程問(wèn)通過(guò)消息互相通訊。定義如下消息:郵件模塊消息定義#define WM_MAIL_ACCOUNT_NOT_

42、SET WM_USER+200#define WM_MAIL_CANNOT_LOGIN WM_USER+201第28頁(yè)#define WM_MAIL_PROCESS WM_USER+202#define WM_MAIL_NO_NEW_MAIL WM_USER+203#define WM_MAIL_PROCESS_DONE WM_USER+204消息的具體含義可在消息名上看出,不再贅述。具體請(qǐng)參看源代碼。定義消息響應(yīng)函數(shù)如下:郵件賬號(hào)沒(méi)設(shè)定事件消息處理ON_MESSAGE(WM_MAIL_ACCOUNT_NOT_SET,ProcessMailAccountNotSet)郵件賬號(hào)沒(méi)設(shè)定事件消息處理

43、ON_MESSAGE(WM_MAIL_CANNOT_LOGIN,ProcessMailCannotLogin)/有郵件要處理事件消息處理ON_MESSAGE(WM_MAIL_PROCESS,ProcessReadMail)/沒(méi)有新郵件要處理事件消息處理ON_MESSAGE(WM_MAIL_NO_NEW_MAIL,ProcessNoMail)/郵件處理完成事件消息處理ON_MESSAGE(WM_MAIL_PROCESS_DONE,ProcessMailDone)當(dāng)核心層調(diào)用收郵件模塊時(shí),開(kāi)新線程如下;AfxBeginThread(GetMailThread,&m_stuThreadInf

44、o,THREAD_PRIORITY_NO RMAL);UINT GetMailThread(LPVOID pParam)是一個(gè)全局函數(shù)。其參數(shù)中是一個(gè)定義的,線程必須用到的信息結(jié)構(gòu)。當(dāng)GetMailThread執(zhí)行完,發(fā)消息到主線程,主線程處理響應(yīng)動(dòng)作。由丁篇幅有限,具體請(qǐng)看代碼。通訊模塊發(fā)送一般消息到好友。這個(gè)函數(shù)把訊息送到網(wǎng)絡(luò)層。在選定對(duì)方好友后,提出一個(gè)對(duì)話框,輸入訊息ProcessSendGeneralMsg(CString strToUserName, CString strText)第29頁(yè)StrToUserName 為好友名,StrText 為發(fā)送的消息字符串。對(duì)方網(wǎng)絡(luò)層收到消息

45、,調(diào)用處理好友信息ProcessReceiveGeneralMsg(msg.m_strUser,msg.m_strText);其中參數(shù) msg 為網(wǎng)絡(luò)層消息類。這里與網(wǎng)絡(luò)層的內(nèi)容緊密相關(guān),請(qǐng)參看網(wǎng)絡(luò)層內(nèi)容。新聞模塊這里是網(wǎng)絡(luò) C/S 結(jié)構(gòu)的具體表達(dá)。本設(shè)計(jì)到現(xiàn)在只實(shí)現(xiàn)了一個(gè)效勞器端的具體效勞,即新聞效勞。但結(jié)構(gòu)已架 設(shè)好,擴(kuò)展方便。ProcessReadNews();向網(wǎng)絡(luò)層發(fā)出讀郵件命令。網(wǎng)絡(luò)層收到,效勞器端的新聞后,調(diào)用ProcessRequestReadNews(CString strNews)再提升到界面層。這里與網(wǎng)絡(luò)層的內(nèi)容緊密相關(guān),請(qǐng)參看網(wǎng)絡(luò)層內(nèi)容。人機(jī)聊天模塊此模塊現(xiàn)在非常不成熟

46、,由丁時(shí)間緊迫,能力有限?,F(xiàn)在只是簡(jiǎn)單的預(yù)定義 的有限命令答復(fù)。目標(biāo)是有一定的人工智能,有一定的推理機(jī)制,一定的自學(xué)習(xí)機(jī)制。要以后進(jìn)一步完成。.4 陪戶端網(wǎng)絡(luò)層網(wǎng)絡(luò)層是具體的網(wǎng)絡(luò)通訊的具體實(shí)現(xiàn),它負(fù)責(zé)與效勞器的通訊。使用到了 SOCKET 類來(lái)具體實(shí)現(xiàn)。這里,定義了一個(gè)繼承了CSocket 的 CToServerSocket 類。第30頁(yè):網(wǎng)絡(luò)通訊高層協(xié)議為了處理不同消息,定義了高層的通訊協(xié)議:CMsg:m_strCommand字符申裝載了這個(gè)協(xié)議。設(shè)置模塊獲得。SendMsg(CMsgSendMsg(CMsg *pMsg)*pMsg)發(fā)送消息,參數(shù)為一個(gè) CMsg 對(duì)像。Re

47、ceiveMsg()ReceiveMsg()接受消息,并進(jìn)行響應(yīng)處理,上升到核心層處理。CMsgCMsg 是定義網(wǎng)絡(luò)消息的類,效勞器端有一個(gè)同樣定義的類。處理具體消息其成員變量有:CString m_strText;/通信字符串CString m_strCommand;/命令字符串CString m_strUser;用戶名字符串CString m_strToUser;目的用戶CString m_strPassword;/用戶字符串第31頁(yè)協(xié)議的具體內(nèi)容.5 |艮務(wù)器端網(wǎng)絡(luò)層效勞器端的網(wǎng)絡(luò)層用了 socketsocket 同客戶端的網(wǎng)絡(luò)層連接。不過(guò)效勞器端比客戶端多一個(gè)類,這里建

48、了一個(gè)繼承CSocketCSocket 的類:ClisteningSocketClisteningSocket 這個(gè)類的實(shí)例將綁定效勞器端的ip 地址,和固定端口號(hào):5040。ClisteningSocketClisteningSocket 用丁監(jiān)聽(tīng)客戶端的連接。假設(shè)發(fā)現(xiàn)有客戶端的連接,產(chǎn)生一個(gè) CClientSocketCClientSocket 類的實(shí)例。CClientSocketCClientSocket 類是繼承了 CSocket 的類,處理對(duì)客戶端的網(wǎng)絡(luò)信息?,F(xiàn)聯(lián)系客戶端網(wǎng)絡(luò)層,實(shí)現(xiàn)的根本算法如下:由丁篇幅有限,具體請(qǐng)看代碼。第32頁(yè)效勞器方(SERVER1、構(gòu)造一個(gè)套接字CSock

49、et ser_s1 ;2、創(chuàng)立該套接字ser_s1.Create (port) ;其中,port 為效勞器方客戶方(CLIENT)1、構(gòu)造一個(gè)套接字CSocket cli_s ;2、創(chuàng)立該套接字cli_s.Create ();第33頁(yè)4、構(gòu)造一個(gè)新的套接字Csocket ser_s2 ;5、效勞器等待從 sers2上 接受客戶連接請(qǐng)求ser_si.Accept (ser_s2)翻開(kāi)的通信通道號(hào)3、開(kāi)始監(jiān)聽(tīng)來(lái)自客戶機(jī)的連接3、客戶機(jī)方套接字 cli s 向效勞器方ser_si.Listen();套接字 ser si 發(fā)出連接請(qǐng)求cli_s .Connect (Addr , port);其中,Ad

50、dr是欲連接效勞器方套接字地址結(jié)構(gòu)指針,可采用IP地址或機(jī)器名。port即翻開(kāi)的通道號(hào),其值與效勞器方的一致。6、構(gòu)造一個(gè)類 CSocketFile 的對(duì)象4、構(gòu)造一個(gè)類 CSocketFile 的對(duì)象CSocketFile file(&ser_s2)CSocketFile file(&cli_s)7、構(gòu)造類 CArchive的對(duì)象 arIn、arOut5、構(gòu)造類 CArchive 的對(duì)象 arIn、arOut,以用于數(shù)據(jù)的收和發(fā)。以用于數(shù)據(jù)的收和發(fā)。CArchive arIn(&file , CArchive :load)CArchive arIn(&file

51、 , CArchive :load)CArchivearOut(&fileCArchivearOut(&fileCArchive :store)CArchive :store)8、使用 arIn和 arOut 進(jìn)行收或發(fā)數(shù)據(jù)6、使用 arIn和 arOut 進(jìn)行發(fā)或收數(shù)據(jù)arIn value ;arOut value ;arOut value ;其中,value是所傳輸?shù)臄?shù)據(jù)9、摧毀所創(chuàng)立的 CSocket、7、摧毀所創(chuàng)立的 CSocket、CSocketFile 、CArchive 等類的對(duì)象CSocketFile 、CArchive 等類的對(duì)象第34頁(yè).6

52、|艮務(wù)器端核心層它處理各種數(shù)據(jù),完成其他各層的初始化、調(diào)用。完成傳統(tǒng)界面的處理(包 括 windows 窗口)。界面上出現(xiàn)的 windows 元素有,一個(gè)樹(shù)控件,一個(gè) List 控件。由丁這里主要涉及到一些繁瑣的源代碼,篇幅有限,具體請(qǐng)看代碼。.7 |艮務(wù)器端功能層事件管理模塊事件管理的所有數(shù)據(jù)來(lái)自數(shù)據(jù)層。主有以下幾個(gè)函數(shù):AddEvent(CString strType, CString strEvent);添加個(gè)事件ShowEvent();顯示所有事件ClearEvent();清空所有事件所有的動(dòng)作由核心層接收的菜單命令激發(fā)。當(dāng)進(jìn)行添加、刪除、更新命令時(shí),會(huì)彈出相應(yīng)對(duì)話框,

53、與管理員交流。賬號(hào)管理模塊所有數(shù)據(jù)來(lái)自數(shù)據(jù)層。主有以下函數(shù)OnMenuAddNewAccount();OnMenuitemAccountDelete();OnMenuitemAccountUpdate();新聞管理模塊所有數(shù)據(jù)來(lái)自數(shù)據(jù)層。有以下函數(shù)OnMenuitemAddNewNews();第35頁(yè)OnMenuitemNewsDelete();OnMenuitemNewsUpdate();所有的動(dòng)作由核心層接收的菜單命令激發(fā)。當(dāng)進(jìn)行添加、刪除、更新命令時(shí),會(huì)彈出相應(yīng)對(duì)話框,與管理員交流客戶通信模塊核心層從網(wǎng)絡(luò)層傳來(lái)的所有有關(guān)客戶通訊的數(shù)據(jù),在這里處理。有以下函數(shù):(已簡(jiǎn)化)ProcessLogin ();ProcessLogout();ProcessSendGeneralMessage ();ProcessSendNews();ProcessListOnlineBuddy ();具體含義可在函數(shù)名上看出,不再贅述。具體請(qǐng)參看源代碼。.8 川艮務(wù)器端數(shù)據(jù)層其他層的所有的數(shù)據(jù)來(lái)自數(shù)據(jù)層。數(shù)據(jù)層的所有數(shù)據(jù)以及處理方法都保存在SQL SERVER 上。C+端有以下幾個(gè)函數(shù):InitConnectSqlServer();用于連接數(shù)據(jù)庫(kù)ExecuteStoredProc(_b

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論