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

正文內(nèi)容

ip語(yǔ)音通信畢業(yè)論文第6次修改(編輯修改稿)

2025-07-16 08:54 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 變化。每個(gè)Win32程序在獨(dú)立的進(jìn)程空間上運(yùn)行,32位地址空間使其在邏輯上達(dá)到了4GB的線性地址空間。這樣在設(shè)計(jì)程序時(shí)大大提高了程序運(yùn)行效率。獨(dú)立進(jìn)程空間的一個(gè)優(yōu)越性是大大提高了系統(tǒng)的穩(wěn)定性,一個(gè)應(yīng)用程序的異常錯(cuò)誤不會(huì)影響其他的應(yīng)用程序。在Windows的一個(gè)進(jìn)程內(nèi),包含一個(gè)或多個(gè)線程。線程是指進(jìn)程的一條執(zhí)行路徑,它包括獨(dú)立的堆棧和CPU寄存器狀態(tài),每個(gè)線程共享所有的進(jìn)程資源,包括打開(kāi)的文件、信號(hào)標(biāo)識(shí)、以及動(dòng)態(tài)分配的內(nèi)存等等。一個(gè)進(jìn)程內(nèi)的所有線程使用同一個(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)行效率。如果用戶的應(yīng)用程序需要有多個(gè)任務(wù)同時(shí)進(jìn)行相應(yīng)的處理,則使用多線程是較理想的選擇。Win32方式的多線程編程的原理與MFC類庫(kù)支持下的原理是一致的,進(jìn)程的主線程在任何需要的時(shí)候都可以創(chuàng)建新的線程。當(dāng)線程執(zhí)行完任務(wù)后,自動(dòng)中止線程;當(dāng)進(jìn)程結(jié)束后,所有的線程都中止。在多線程編程模式下,所有活動(dòng)的線程共享進(jìn)程的資源。因此,在編程時(shí)需要考慮多個(gè)線程訪問(wèn)同一資源時(shí)產(chǎn)生沖突的問(wèn)題:當(dāng)一個(gè)線程正在訪問(wèn)一個(gè)進(jìn)程對(duì)象時(shí),另一個(gè)線程要改變?cè)搶?duì)象,這時(shí)可能會(huì)產(chǎn)生錯(cuò)誤的結(jié)果。 MFC環(huán)境下多線程編程技術(shù)MFC多線程編程基本原理與Win32函數(shù)的設(shè)計(jì)是一致的,不過(guò)由于MFC對(duì)同步對(duì)象做了封裝,因此對(duì)用戶編程實(shí)現(xiàn)來(lái)說(shuō)更加方便,避免了對(duì)象句柄管理上的繁瑣工作。尤其是在多個(gè)窗口線程情況下,MFC中直接提供了用戶接口線程的設(shè)計(jì)。在MFC中,線程分為兩種:用戶接口線程和輔助線程。用戶接口線程常用于接收用戶的輸入,處理相應(yīng)的事件和消息。在用戶接口線程中,包含一個(gè)消息處理循環(huán),負(fù)責(zé)處理用戶輸入產(chǎn)生的事件和消息。Win32API并不區(qū)分這兩種線程的類型,它只是獲取線程的起始地址,然后開(kāi)始執(zhí)行線程。而MFC則針對(duì)不同的用戶的需要作出了分類。如果我們需要編寫多個(gè)有用戶接口的線程的應(yīng)用程序,則利用Win32API要寫很多的框架代碼來(lái)完成每個(gè)線程的消息事件的處理,而用MFC則可以充分發(fā)揮MFC類中的強(qiáng)大功能,還可以使用ClassWizard來(lái)幫助管理類的消息映射和成員變量。在程序中使用多線程時(shí),一般很少有多個(gè)線程能在其生命期內(nèi)進(jìn)行完全獨(dú)立的操作。更多的情況是一些線程進(jìn)行某些處理操作,而其他的線程必須對(duì)其處理結(jié)果進(jìn)行了解。正常情況下對(duì)這種處理結(jié)果的了解應(yīng)當(dāng)在其處理任務(wù)完成后進(jìn)行。 如果不采取適當(dāng)?shù)拇胧?,其他線程往往會(huì)在線程處理任務(wù)結(jié)束前就去訪問(wèn)處理結(jié)果,這就很有可能得到有關(guān)處理結(jié)果的錯(cuò)誤了解。例如,多個(gè)線程同時(shí)訪問(wèn)同一個(gè)全局變量,如果都是讀取操作,則不會(huì)出現(xiàn)問(wèn)題。如果一個(gè)線程負(fù)責(zé)改變此變量的值,而其他線程負(fù)責(zé)同時(shí)讀取變量?jī)?nèi)容,則不能保證讀取到的數(shù)據(jù)是經(jīng)過(guò)寫線程修改后的。 為了確保讀線程讀取到的是經(jīng)過(guò)修改的變量,就必須在向變量寫入數(shù)據(jù)時(shí)禁止其他線程對(duì)其的任何訪問(wèn),直至賦值過(guò)程結(jié)束后再解除對(duì)其他線程的訪問(wèn)限制。像這種保證線程能了解其他線程任務(wù)處理結(jié)束后的處理結(jié)果而采取的保護(hù)措施即為線程同步。 線程同步是一個(gè)非常大的話題,包括方方面面的內(nèi)容。從大的方面講,線程的同步可分用戶模式的線程同步和內(nèi)核對(duì)象的線程同步兩大類。用戶模式中線程的同步方法主要有原子訪問(wèn)和臨界區(qū)等方法。其特點(diǎn)是同步速度特別快,適合于對(duì)線程運(yùn)行速度有嚴(yán)格要求的場(chǎng)合。 內(nèi)核對(duì)象的線程同步則主要由事件、等待定時(shí)器、信號(hào)量以及信號(hào)燈等內(nèi)核對(duì)象構(gòu)成。由于這種同步機(jī)制使用了內(nèi)核對(duì)象,使用時(shí)必須將線程從用戶模式切換到內(nèi)核模式,而這種轉(zhuǎn)換一般要耗費(fèi)近千個(gè)CPU周期,因此同步速度較慢,但在適用性上卻要遠(yuǎn)優(yōu)于用戶模式的線程同步方式。臨界區(qū)(Critical Section)是一段獨(dú)占對(duì)某些共享資源訪問(wèn)的代碼,在任意時(shí)刻只允許一個(gè)線程對(duì)共享資源進(jìn)行訪問(wèn)。如果有多個(gè)線程試圖同時(shí)訪問(wèn)臨界區(qū),那么在有一個(gè)線程進(jìn)入后其他所有試圖訪問(wèn)此臨界區(qū)的線程將被掛起,并一直持續(xù)到進(jìn)入臨界區(qū)的線程離開(kāi)。臨界區(qū)在被釋放后,其他線程可以繼續(xù)搶占,并以此達(dá)到用原子方式操作共享資源的目的。 臨界區(qū)在使用時(shí)以CRITICAL_SECTION結(jié)構(gòu)對(duì)象保護(hù)共享資源,并分別用EnterCriticalSection()和LeaveCriticalSection()函數(shù)去標(biāo)識(shí)和釋放一個(gè)臨界區(qū)。所用到的CRITICAL_SECTION結(jié)構(gòu)對(duì)象必須經(jīng)過(guò)InitializeCriticalSection()的初始化后才能使用,而且必須確保所有線程中的任何試圖訪問(wèn)此共享資源的代碼都處在此臨界區(qū)的保護(hù)之下。否則臨界區(qū)將不會(huì)起到應(yīng)有的作用,共享資源依然有被破壞的可能。信號(hào)量(Semaphore)內(nèi)核對(duì)象對(duì)線程的同步方式與前面幾種方法不同,它允許多個(gè)線程在同一時(shí)刻訪問(wèn)同一資源,但是需要限制在同一時(shí)刻訪問(wèn)此資源的最大線程數(shù)目。一般是將當(dāng)前可用資源計(jì)數(shù)設(shè)置為最大資源計(jì)數(shù),每增加一個(gè)線程對(duì)共享資源的訪問(wèn),當(dāng)前可用資源計(jì)數(shù)就會(huì)減1,只要當(dāng)前可用資源計(jì)數(shù)是大于0的,就可以發(fā)出信號(hào)量信號(hào)。但是當(dāng)前可用計(jì)數(shù)減小到0時(shí)則說(shuō)明當(dāng)前占用資源的線程數(shù)已經(jīng)達(dá)到了所允許的最大數(shù)目,不能再允許其他線程的進(jìn)入,此時(shí)的信號(hào)量信號(hào)將無(wú)法發(fā)出。線程在處理完共享資源后,應(yīng)在離開(kāi)的同時(shí)通過(guò)ReleaseSemaphore()函數(shù)將當(dāng)前可用資源計(jì)數(shù)加1。在任何時(shí)候當(dāng)前可用資源計(jì)數(shù)決不可能大于最大資源計(jì)數(shù)?! ? IP語(yǔ)音通信開(kāi)發(fā)協(xié)議及需求分析語(yǔ)音實(shí)時(shí)通信涉及到很多方面的技術(shù),在開(kāi)發(fā)的過(guò)程中受到諸多方面的制約,在本系統(tǒng)的實(shí)現(xiàn)過(guò)程中主要運(yùn)用的通信協(xié)議有IP協(xié)議和UDP協(xié)議。 IP協(xié)議 IP協(xié)議簡(jiǎn)介IP是英文Internet Protocol(網(wǎng)絡(luò)之間互連的協(xié)議)的縮寫,中文簡(jiǎn)稱為“網(wǎng)協(xié)”,也就是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議。在因特網(wǎng)中,它是能使連接到網(wǎng)上的所有計(jì)算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)相互通信的一套規(guī)則,規(guī)定了計(jì)算機(jī)在因特網(wǎng)上進(jìn)行通信時(shí)應(yīng)當(dāng)遵守的規(guī)則。任何廠家生產(chǎn)的計(jì)算機(jī)系統(tǒng),只要遵守 IP協(xié)議就可以與因特網(wǎng)互連互通。IP地址具有唯一性,根據(jù)用戶性質(zhì)的不同,可以分為五類。 IP協(xié)議基本原理各個(gè)廠家生產(chǎn)的網(wǎng)絡(luò)系統(tǒng)和設(shè)備,如以太網(wǎng)、分組交換網(wǎng)等,它們相互之間不能互通,不能互通的主要原因是因?yàn)樗鼈兯鶄魉蛿?shù)據(jù)的基本單元(技術(shù)上稱之為“幀”)的格式不同。IP協(xié)議實(shí)際上是一套由軟件程序組成的協(xié)議軟件,它把各種不同“幀”統(tǒng)一轉(zhuǎn)換成NNT流量或者“IP數(shù)據(jù)包”格式,這種轉(zhuǎn)換是因特網(wǎng)的一個(gè)最重要的特點(diǎn),使所有各種計(jì)算機(jī)都能在因特網(wǎng)上實(shí)現(xiàn)互通,即具有“開(kāi)放性”的特點(diǎn)那么,“數(shù)據(jù)包(packet)” 是什么?它又有什么特點(diǎn)呢?數(shù)據(jù)包也是分組交換的一種形式,就是把所傳送的數(shù)據(jù)分段打成 “包”,再傳送出去。但是,與傳統(tǒng)的“連接型”分組交換不同,它屬于“無(wú)連接型”,是把打成的每個(gè)“包”(分組)都作為一個(gè)“獨(dú)立的報(bào)文”傳送出去,所以叫做“數(shù)據(jù)包”。這樣,在開(kāi)始通信之前就不需要先連接好一條電路,各個(gè)數(shù)據(jù)包不一定都通過(guò)同一條路徑傳輸,所以叫做“無(wú)連接型”。這一特點(diǎn)非常重要,它大大提高了網(wǎng)絡(luò)的堅(jiān)固性和安全性。 IP地址IP協(xié)議中還有一個(gè)非常重要的內(nèi)容,那就是給因特網(wǎng)上的每臺(tái)計(jì)算機(jī)和其它設(shè)備都規(guī)定了一個(gè)唯一的地址,叫做“IP 地址”。由于有這種唯一的地址,才保證了用戶在連網(wǎng)的計(jì)算機(jī)上操作時(shí),能夠高效而且方便地從千千萬(wàn)萬(wàn)臺(tái)計(jì)算機(jī)中選出自己所需的對(duì)象來(lái)。現(xiàn)在電信網(wǎng)正在與 IP網(wǎng)走向融合,以IP為基礎(chǔ)的新技術(shù)是熱門的技術(shù),如用IP網(wǎng)絡(luò)傳送話音的技術(shù)(即VoIP)就很熱門,其它如IP over ATM、IPover SDH、IP over WDM等等,都是IP技術(shù)的研究重點(diǎn)。所謂IP地址就是給每個(gè)連接在Internet上的主機(jī)分配的一個(gè)32bit地址。IP地址就好象電話號(hào)碼,有了某人的電話號(hào)碼,你就能與他通話了。同樣,有了某臺(tái)主機(jī)的IP地址,你就能與這臺(tái)主機(jī)通信了。 按照TCP/IP(Transport Control Protocol/Internet Protocol,傳輸控制協(xié)議/Internet協(xié)議)協(xié)議規(guī)定,IP地址用二進(jìn)制來(lái)表示,每個(gè)IP地址長(zhǎng)32bit,比特?fù)Q算成字節(jié),就是4個(gè)字節(jié)。例如一個(gè)采用二進(jìn)制形式的IP地址是“00001010000000000000000000000001”,這么長(zhǎng)的地址,人們處理起來(lái)也太費(fèi)勁了。為了方便人們的使用,IP地址經(jīng)常被寫成十進(jìn)制的形式,中間使用符號(hào)“.”分開(kāi)不同的字節(jié)。于是,上面的IP地址可以表示為“”。IP地址的這種表示法叫做“點(diǎn)分十進(jìn)制表示法”,這顯然比1和0容易記憶得多。 UDP協(xié)議UDP是OSI參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。UDP協(xié)議適用端口分別運(yùn)行在同一臺(tái)設(shè)備上的多個(gè)應(yīng)用程序。 數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。UDP協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個(gè)典型的數(shù)據(jù)包就是一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)包的前8個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。與所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開(kāi)放系統(tǒng)互連)參考模型,UDP和TCP都屬于傳輸層協(xié)議。TCP協(xié)議提供的是可靠的、面向連接的傳輸控制協(xié)議,即在傳輸數(shù)據(jù)前要先建立邏輯連接,然后再傳輸數(shù)據(jù),最后釋放連接3個(gè)過(guò)程。TCP提供端到端、全雙工通信;采用字節(jié)流方式,如果字節(jié)流太長(zhǎng),將其分段;提供緊急數(shù)據(jù)傳送功能 需求分析 語(yǔ)音軟件設(shè)計(jì)背景需求分析語(yǔ)音通訊是即時(shí)通信系統(tǒng)中的一個(gè)核心模塊,是人們實(shí)現(xiàn)即時(shí)交流的重要環(huán)節(jié),而傳統(tǒng)的一些諸如飛秋之類的局域網(wǎng)聊天工具雖然實(shí)現(xiàn)了在局域網(wǎng)內(nèi)文字聊天、文件傳送等一系列功能,但其在語(yǔ)音方面卻涉足不深,給用戶的實(shí)時(shí)交流帶來(lái)諸多的影響。所以,本次畢業(yè)論文以即時(shí)通信在現(xiàn)實(shí)生活中大量應(yīng)用為良機(jī),實(shí)現(xiàn)了局域網(wǎng)內(nèi)兩臺(tái)主機(jī)實(shí)時(shí)語(yǔ)音聊天。只要其中任意一個(gè)用戶發(fā)出語(yǔ)音聊天的請(qǐng)求,對(duì)方就會(huì)接收到一個(gè)請(qǐng)求,若同意之后雙方就可以進(jìn)行隨意的語(yǔ)音聊天了,最后點(diǎn)擊斷開(kāi)鍵結(jié)束語(yǔ)音聊天。首先對(duì)語(yǔ)音通訊流程進(jìn)行分析,流程分析是整個(gè)系統(tǒng)的基礎(chǔ),它給出了語(yǔ)音是怎樣從一臺(tái)主機(jī)捕獲并發(fā)送到另一臺(tái)主機(jī)的整個(gè)過(guò)程。一般語(yǔ)音通訊系統(tǒng)應(yīng)該包括:建立連接,音頻捕獲,音頻發(fā)送(包括音頻壓縮),音頻接收,音頻回放(包括音頻解壓)五個(gè)部分。其基本流程為:建立連接→打開(kāi)麥克風(fēng)→捕獲音頻→音頻壓縮→音頻傳送→音頻接收→音頻解壓→音頻回放??傮w流程圖如下: 語(yǔ)音通信總體流程圖 語(yǔ)音通信系統(tǒng)功能模塊需求分析語(yǔ)音通訊系統(tǒng)主要是是實(shí)現(xiàn)在局域網(wǎng)內(nèi)的實(shí)時(shí)語(yǔ)音聊天,一般來(lái)說(shuō)當(dāng)通信雙方中的一方給對(duì)方發(fā)出語(yǔ)音聊天請(qǐng)求后,服務(wù)器進(jìn)行轉(zhuǎn)發(fā)最后雙方建立通信連接??紤]到在實(shí)際應(yīng)用中特殊性,本軟件不是采用的C/S模式,因而通信雙方是一種對(duì)等的關(guān)系。當(dāng)在雙方通信連接建立后就可以在兩臺(tái)計(jì)算機(jī)之間進(jìn)行點(diǎn)對(duì)點(diǎn)音頻數(shù)據(jù)傳輸。本地主機(jī)捕獲音頻設(shè)備中的音頻數(shù)據(jù),并經(jīng)過(guò)壓縮然后發(fā)送給對(duì)方,在對(duì)方接收到此音頻數(shù)據(jù)之后經(jīng)解壓回放。具體數(shù)據(jù)流走向是:請(qǐng)求方發(fā)出請(qǐng)求直接轉(zhuǎn)發(fā)到被請(qǐng)求方,經(jīng)過(guò)被請(qǐng)求方對(duì)請(qǐng)求方提出的請(qǐng)求進(jìn)行處理,然后將其反饋消息返回給請(qǐng)求方(此處假設(shè)被請(qǐng)求方選擇了接受),則請(qǐng)求方將得到對(duì)方的IP地址并打開(kāi)自己語(yǔ)音設(shè)備開(kāi)始進(jìn)行音頻捕獲、壓縮并發(fā)送,而被請(qǐng)求方在進(jìn)行音頻捕獲的同時(shí)進(jìn)行音頻接收、解壓與回放。所以可以得到頂層數(shù)據(jù)流圖見(jiàn)下圖: 語(yǔ)音通信系統(tǒng)數(shù)據(jù)流程圖在上面數(shù)據(jù)流圖中,有處理語(yǔ)音請(qǐng)求、捕獲音頻與發(fā)送、音頻接收與回放三大處理模塊,這三個(gè)處理模塊的具體功能如下:1.處理語(yǔ)音請(qǐng)求請(qǐng)求方提出的語(yǔ)音聊天請(qǐng)求,然后經(jīng)過(guò)對(duì)方處理將其反饋消息轉(zhuǎn)發(fā)到請(qǐng)求方,請(qǐng)求方根據(jù)對(duì)方的應(yīng)答消息完成相應(yīng)的動(dòng)作,如下圖: 語(yǔ)音請(qǐng)求數(shù)據(jù)流程圖2.捕獲音頻與發(fā)送當(dāng)請(qǐng)求方接收到對(duì)方“接受”語(yǔ)音請(qǐng)求的應(yīng)答消息后,就會(huì)打開(kāi)自己的音頻設(shè)備啟動(dòng)音頻捕獲處理模塊,并將捕獲到的音頻數(shù)據(jù)進(jìn)行壓縮處理之后發(fā)送給對(duì)方。在發(fā)送給對(duì)方的過(guò)程中會(huì)用到處理語(yǔ)音請(qǐng)求過(guò)程中所得到的對(duì)方的IP地址。其主要步驟有:確定音頻格式,建立音頻捕獲對(duì)象,打開(kāi)錄音設(shè)備,為設(shè)備分配足夠的內(nèi)存緩存區(qū),將緩沖區(qū)與設(shè)備相關(guān)聯(lián),開(kāi)始捕獲音頻,將捕獲的音
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1