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

正文內(nèi)容

基于net的局域網(wǎng)im聊天工具(編輯修改稿)

2024-12-23 21:41 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 分片,并不只是發(fā)送端主機(jī)連接第一個(gè)網(wǎng)絡(luò)才這樣做。 本科生畢業(yè)設(shè)計(jì) 19 2.、 UDP校驗(yàn) UDP檢驗(yàn)和覆蓋 UDP首部和 UDP數(shù)據(jù)?;叵?IP首部的檢驗(yàn)和,它只覆蓋 IP的首部 — 并不覆蓋 IP數(shù)據(jù)報(bào)中的任何數(shù)據(jù)。 UDP和 TCP在首部中都有覆蓋它們首部和數(shù)據(jù)的檢驗(yàn)。 UDP的檢驗(yàn)和是可選的,而 TCP的檢驗(yàn)和是必需的。盡管 UDP檢驗(yàn)和的基本計(jì)算方法與我們?cè)?3 . 2節(jié)中描述的 IP首部檢驗(yàn)和計(jì)算方法相類似( 16 bit字的二進(jìn)制反碼和),但是它們之間存在不同的地方。首先, UDP數(shù)據(jù)報(bào)的長(zhǎng)度可以為奇數(shù)字節(jié),但是檢驗(yàn)和算法是把若干個(gè) 16 bit字相加。解決方法是必要時(shí)在最后增加填充字節(jié) 0,這只是為了檢驗(yàn)和的計(jì)算(也就是說,可能增加的填充字節(jié)不被傳送)。 其次, UDP數(shù)據(jù)報(bào)和 TCP段都包含一個(gè) 12字節(jié)長(zhǎng)的偽首部,它是為了計(jì)算檢驗(yàn)而設(shè)置的。偽首部包含 I P首部一些字段。其目的是讓 UDP兩次檢查數(shù)據(jù)是否已經(jīng)正確到達(dá)目的地(例如, IP沒有接受地址不是本主機(jī)的數(shù)據(jù)報(bào),以及 IP沒有把應(yīng)傳給另一高 層的數(shù)據(jù)報(bào)傳給 UDP)。 3.、 最大 UDP數(shù)據(jù)報(bào)長(zhǎng)度 理論上, IP數(shù)據(jù)報(bào)的最大長(zhǎng)度是 65535字節(jié),這是由 IP首部 16比特總長(zhǎng)度字段所限制的。去除 20字節(jié)的 IP首部和 8個(gè)字節(jié)的 UDP首部, UDP數(shù)據(jù)報(bào)中用戶數(shù)據(jù)的最長(zhǎng)長(zhǎng)度為 65507字節(jié)。但是,大多數(shù)實(shí)現(xiàn)所提供的長(zhǎng)度比這個(gè)最大值小。 我們將遇到兩個(gè)限制因素。第一,應(yīng)用程序可能會(huì)受到其程序接口的限制。Socket API提供了一個(gè)可供應(yīng)用程序調(diào)用的函數(shù),以設(shè)置接收和發(fā)送緩存的長(zhǎng)度。對(duì)于 UDP Socket,這個(gè)長(zhǎng)度與應(yīng)用程序可以讀寫的最大 UDP數(shù)據(jù)報(bào)的長(zhǎng)度直 接相關(guān)?,F(xiàn)在的大部分系統(tǒng)都默認(rèn)提供了可讀寫大于 8192字節(jié)的 UDP數(shù)據(jù)報(bào)(使用這個(gè)默認(rèn)值是因?yàn)?8192是 NFS讀寫用戶數(shù)據(jù)數(shù)的默認(rèn)值)。第二個(gè)限制來自于 TCP/ IP的內(nèi)核實(shí)現(xiàn)??赡艽嬖谝恍?shí)現(xiàn)特性(或差錯(cuò)),使 I P數(shù)據(jù)報(bào)長(zhǎng)度小于 65535字節(jié)。 4.、 數(shù)據(jù)報(bào)截?cái)? 由于 IP能夠發(fā)送或接收特定長(zhǎng)度的數(shù)據(jù)報(bào)并不意味著接收應(yīng)用程序可以讀取該長(zhǎng)度的數(shù)據(jù)。因此, UDP編程接口允許應(yīng)用程序指定每次返回的最大字節(jié)數(shù)。如果接收到的數(shù)據(jù)報(bào)長(zhǎng)度大于應(yīng)用程序所能處理的長(zhǎng)度,那么結(jié)果取決于編程接口和實(shí)現(xiàn)。 典型的 Berkeley版 Socket API對(duì)數(shù)據(jù)報(bào)進(jìn)行截?cái)?,并丟棄任何多余的數(shù)據(jù)。應(yīng)用程序何時(shí)能夠知道,則與版本有關(guān)( Reno及其后的版本可以通知應(yīng)用程序數(shù)據(jù)報(bào)被截?cái)啵?SVR4下的 Socket API(包括 Solaris ) 并不截?cái)鄶?shù)據(jù)報(bào)。超出部分?jǐn)?shù)據(jù)在后面的讀取中返回。它也不通知應(yīng)用程序從單個(gè) UDP數(shù)據(jù)報(bào)中多次進(jìn)行讀取操作。 TLI API不丟棄數(shù)據(jù)。相反,它返回一個(gè)標(biāo)志表明可以獲得更多的數(shù)據(jù),而應(yīng)用程序后面的讀操作將返回?cái)?shù)據(jù)報(bào)的其余部分。 TCP為應(yīng)用程序本科生畢業(yè)設(shè)計(jì) 20 提供連續(xù)的字節(jié)流,而沒有任何信息邊界。 TCP以應(yīng) 用程序讀操作時(shí)所要求的長(zhǎng)度來傳送數(shù)據(jù),因此,在這個(gè)接口下,不會(huì)發(fā)生數(shù)據(jù)丟失。 5.、 客戶 IP地址及端口號(hào) 來自客戶的是 UDP數(shù)據(jù)報(bào)。 IP首部包含源端和目的端 IP地址, UDP首部包含了源端和目的端的 UDP端口號(hào)。當(dāng)一個(gè)應(yīng)用程序接收到 UDP數(shù)據(jù)報(bào)時(shí),操作系統(tǒng)必須告訴它是誰發(fā)送了這份消息,即源 I P地址和端口號(hào)。這個(gè)特性允許一個(gè)交互 UDP服務(wù)器對(duì)多個(gè)客戶進(jìn)行處理。給每個(gè)發(fā)送請(qǐng)求的客戶發(fā)回應(yīng) 6.、 目的 IP地址 一些應(yīng)用程序需要知道數(shù)據(jù)報(bào)是發(fā)送給誰的,即目的 IP地址。這要求操作系統(tǒng)從接收到的 UDP數(shù)據(jù)報(bào)中將目的 I P地址交給應(yīng)用程序。 廣播和組播 TCP 通信采用一對(duì)一的通信模式。日常生活中的網(wǎng)絡(luò)會(huì)議通知、廣告、網(wǎng)絡(luò)信息公告等功能,需要采用 UDP 實(shí)現(xiàn)一對(duì)多的群發(fā)功能。通過 Inter 實(shí)現(xiàn)群發(fā)功能的形式有兩種: ,比如各類通知、單位公告、集體活動(dòng)日程安排等; Inter 網(wǎng)上不同的子網(wǎng)發(fā)送消息,比如集團(tuán)向其所屬的公司或用戶子網(wǎng)發(fā)布信息公告等。 廣播就是指同時(shí)向子網(wǎng)中的多臺(tái)計(jì)算機(jī)發(fā)送消息,并且所有子網(wǎng)中的計(jì)算機(jī)都可以接收到發(fā)送方發(fā)來的消息。每個(gè)廣 播消息包含一個(gè)特殊的 IP地址,這個(gè)特殊地址的特點(diǎn)是子網(wǎng)內(nèi)主機(jī)標(biāo)示部分的二進(jìn)制表示均為 1。 廣播消息地址分為兩種類型: 本地廣播是指向子網(wǎng)中的所有計(jì)算機(jī)發(fā)送廣播消息,其他網(wǎng)絡(luò)不會(huì)受到本地廣播的影響。 IP地址分為兩部分,網(wǎng)絡(luò)標(biāo)示部分(指定向哪個(gè)子網(wǎng)發(fā)送)和主機(jī)標(biāo)示部分(全為 1表示向該子網(wǎng)內(nèi)的所有用戶發(fā)送消息。),把主機(jī)標(biāo)示部分二進(jìn)制表示全部為 1的地址稱為本地廣播地址 全球廣播的目的地是網(wǎng)絡(luò)上的所有設(shè)備。全球廣播使用四個(gè)字節(jié)所有位全為1的 IP地址,即點(diǎn)分十進(jìn)制的 ,這個(gè)特定的廣播地址 表明數(shù)據(jù)報(bào)的目的地是網(wǎng)絡(luò)上的所有設(shè)備。但是由于路由器會(huì)自動(dòng)過濾掉全球廣播,所以使用這個(gè)地址沒有實(shí)際意義。 廣播的通信模式雖然能夠?qū)崿F(xiàn)一對(duì)多的通信需要,但是,由于廣播是向子網(wǎng)中的所有計(jì)算機(jī)用戶發(fā)送消息,沒有目的性,不但增加了網(wǎng)絡(luò)傳輸負(fù)擔(dān),而且資源消耗較高。 本科生畢業(yè)設(shè)計(jì) 21 組播也叫多路廣播。所謂組播是將消息從一臺(tái)計(jì)算機(jī)發(fā)送到本網(wǎng)或全網(wǎng)內(nèi)選擇的計(jì)算機(jī)子集上,即發(fā)送到那些加入指定組播組的計(jì)算機(jī)上。 實(shí)際運(yùn)用中,往往除了廣播之外,為了滿足一部分特定的用戶需求,我們則需要用到組播這一技術(shù),組播和廣播的區(qū)別主要有以下兩種: 播無法通過路由器 ,廣播只是限于本網(wǎng)段內(nèi),遇到路由器則止。同網(wǎng)段內(nèi)其他在指定端口偵聽的程序都能收到該包都需要一個(gè)數(shù)據(jù) copy。組播沒有這個(gè)限制,只要加入組就能收到數(shù)據(jù)包。 ,沒有目的性,會(huì)增加網(wǎng)絡(luò)傳輸負(fù)擔(dān),而且資源消耗較高。組播將消息發(fā)送到加入指定組播組的計(jì)算機(jī)中,組播組是開放的,每臺(tái)計(jì)算機(jī)都可以通過程序隨時(shí)加入到組播組中,也可以隨時(shí)離開,因此減少了不必要的網(wǎng)絡(luò)傳輸負(fù)擔(dān)。 組播組:是分享一個(gè)組播地址的一組設(shè)備。任何發(fā)送到組播地址的消息都會(huì)被發(fā)送到組內(nèi)的所有成員 設(shè)備上。組可以是永久的,也可以是臨時(shí)的。大多數(shù)組播組是臨時(shí)的,僅在有成員的時(shí)候才存在。 組播地址:組播地址是范圍在 D類 IP地址。 IP組播使用特殊的 IP地址范圍來表示不同的組播組。用戶創(chuàng)建一個(gè)新的組播組時(shí)只需從地址范圍內(nèi)選出一個(gè)地址,然后為這個(gè)地址構(gòu)造一個(gè)對(duì)象,就可以開始發(fā)送消息了。 使用組播時(shí),應(yīng)注意的是 TTL(Time To Live,生存周期 )值的設(shè)置。 TTL值是允許路由器轉(zhuǎn)發(fā)的最大數(shù)目,當(dāng)達(dá)到這個(gè)最大值時(shí),數(shù)據(jù)包就會(huì)被丟棄。如果使用默認(rèn)值 (默認(rèn)值 為 1),則只能在子網(wǎng)中發(fā)送。可以通過 UdpClient對(duì)象的 Ttl屬 性直接設(shè)置 TTL值,例如: 代碼 31 該語句設(shè)置 TTL值為 50,即最多允許 50次路由器轉(zhuǎn)發(fā)。 利用 UdpClient的 DropMulticastGroup方法,可以退出組播組。參數(shù)中指出要退出的多路廣播組的 IPAddress實(shí)例。 UdpClient從組中收回之后,將不能再接收發(fā)送到該組的數(shù)據(jù)報(bào)。 本系統(tǒng)中用到的語音編解碼規(guī)范 音頻的編解碼,壓縮轉(zhuǎn)換 ,使用 G729 協(xié)議。 協(xié)議建 議使用 CSACELP的 8kb/s 話音編碼算 法,其編譯碼原理如下。 UdpClient myUdpClient = new UdpClient()。 myUdpClient. TTL = 50。 本科生畢業(yè)設(shè)計(jì) 22 編碼原理 模擬輸入信號(hào)經(jīng)話帶濾波后以 8000Hz 取樣率采樣,獲得的樣值隨后轉(zhuǎn)換為16 比特線性 PCM 信號(hào)并輸入到編碼器。編碼器在 10ms 的話音幀上運(yùn)行,它相應(yīng)于采樣速率每秒 8000 次的 80 個(gè)樣本。對(duì)每個(gè) 10ms 幀而言,分析話音信號(hào)以抽取碼激勵(lì)線性預(yù)測(cè) (CELP)模式的參數(shù)。在預(yù)處理單元中,輸入信號(hào)須經(jīng)過定標(biāo)和高通濾波。定標(biāo)是指輸入信號(hào)被 2 除,以降低定點(diǎn)運(yùn)算中的溢出可能;高通濾波則濾掉不希望出現(xiàn)的低頻分量。經(jīng)預(yù)處理的信號(hào)充當(dāng)所有后續(xù)分析使用的輸入信號(hào)。 LP 分析每 10ms 幀進(jìn)行 一次,以計(jì)算 LP 濾波器系數(shù),此后,為了量化與內(nèi)插的目的,將該 LP 系數(shù)轉(zhuǎn)換到線譜對(duì) (LSP)域,接著把內(nèi)插的量化的與非量化的濾波器轉(zhuǎn)換回 LP 濾波系數(shù),以構(gòu)造每子幀的合成與加權(quán)濾波器。每 10ms幀根據(jù)感知加權(quán)話音信號(hào)估計(jì)一次開環(huán)基音延遲,然后對(duì)各子幀重復(fù)以下運(yùn)算: A. 濾波器的初始態(tài)通過 LPC 信息與激勵(lì)間的誤差濾波來更新; B. 通過 LPC 信息經(jīng)由加權(quán)合成濾波器的濾波來計(jì)算目標(biāo)信號(hào) x(n); C. 計(jì)算加權(quán)合成濾波器的脈沖響應(yīng) h(n); D. 通過開環(huán)基音延遲值的搜尋,使用目標(biāo)信號(hào) x(n)和脈沖響應(yīng) h(n)來 完成閉環(huán)基音分析,以發(fā)現(xiàn)自適應(yīng)碼本的延遲與增益; E. 通過除去自適應(yīng)碼本影響,更新目標(biāo)信號(hào) x(n),并且所產(chǎn)生的新的目標(biāo)信號(hào) x(n)用于在固定碼本中搜尋發(fā)現(xiàn)最佳激勵(lì); F. 自適應(yīng)與固定碼本產(chǎn)生的增益采用 7 比特矢量量化,通過極小化原始話音與重構(gòu)話音間的均方加權(quán)誤差完成增益碼本的搜尋; G. 使用決定的激勵(lì)信號(hào)對(duì)合成與加權(quán)濾波器的狀態(tài)更新以計(jì)算下一子幀的目標(biāo)信號(hào)。 這樣,完成 CSACELP 的編碼過程,編碼出傳輸速率為 8kb/s 的話音信號(hào)比特流 (而普通的 PCM 話音為 64kb/s)。 譯碼原理 首 先,從接收到的比特流中抽取參數(shù)的指標(biāo),譯碼后獲取相應(yīng)于 10ms 話音幀的編碼參數(shù)。這些參數(shù)為 LSP 系數(shù)、兩個(gè)分?jǐn)?shù)基音延遲、兩個(gè)固定碼本矢量以及自適應(yīng)碼本增益與固定碼本增益的兩個(gè)集。對(duì)每個(gè)子幀內(nèi)插 LSP 系數(shù)并將其轉(zhuǎn)換為 LP 濾波器系數(shù)。然后,對(duì)于每個(gè) 5ms 子幀實(shí)施以下步驟:分別按其增益進(jìn)行定標(biāo)的自適應(yīng)碼本矢量相加與固定碼本矢量,構(gòu)造激勵(lì);通過 LP 合成濾波器濾波上述激勵(lì),重構(gòu)話音;重構(gòu)話音信號(hào)經(jīng)后置處理后還原出普通的PCM(64kb/s)話音信號(hào)。 本科生畢業(yè)設(shè)計(jì) 23 第 4 章 語音及群聊功能具體設(shè)計(jì) 語音通話的實(shí)現(xiàn) 實(shí)現(xiàn)方法概要 A. 語音采集:采集的作用就是從你的麥克風(fēng)中獲取數(shù)據(jù),我采用 DirectSound類來實(shí)現(xiàn)這個(gè)技術(shù)。 B. 語音編碼:利用語音編碼算法對(duì)采集到的話音進(jìn)行壓縮編碼,進(jìn)行編碼的目的是為了減少網(wǎng)絡(luò)帶寬的壓力。 C. 語音傳輸:將采集到的聲音傳輸?shù)骄W(wǎng)絡(luò)上的其它主機(jī),我采用 Socket UDP方式來實(shí)現(xiàn)。 D. 語音解碼:如果所傳輸?shù)恼Z音進(jìn)行過壓縮編碼,則必須對(duì)語音進(jìn)行解碼,否則無法得到原始語音數(shù)據(jù)。 :當(dāng)對(duì)方通過網(wǎng)絡(luò)傳輸?shù)奖緳C(jī)時(shí),進(jìn)行實(shí)時(shí)播放。 圖 41 語音實(shí)時(shí)通信系統(tǒng)框圖 本科生畢業(yè)設(shè)計(jì) 24 語音采集 與 音不同的是,錄音我們需要建立一個(gè) WAVE 文件來存儲(chǔ)這些采集到的數(shù)據(jù),而在語音聊天中,則不需要存儲(chǔ),當(dāng)采集到一些數(shù)據(jù)后,就立刻發(fā)送出去,因此也不需要開辟很大的空間來存放 PCM 數(shù)據(jù)。 以下是采集的基本步驟: A. 設(shè)置 PCM 格式,設(shè)置相關(guān)的參數(shù),如:采樣頻率、量化位數(shù)等。 B. 建立采集用的設(shè)備對(duì)象,建立采集用的緩沖區(qū)對(duì)象。 C. 設(shè)置緩沖區(qū)通知,設(shè)置通知被觸發(fā)后的事件。通知是用于當(dāng)緩沖區(qū)的讀指針達(dá)到某預(yù)設(shè)位置時(shí)觸發(fā)通知事件,提醒我們可以對(duì)某部分的數(shù)據(jù)進(jìn)行傳送了。 D. 開始采集聲音。 E. 當(dāng)通知被觸發(fā)后,建立一個(gè)新的線程來處理數(shù)據(jù)傳送的事件。(建立一個(gè)新的線程,就是為了防止采集過程被中斷)。 以下為主要代碼: 代碼 41 /// 設(shè)置音頻格式,如采樣率等 /// returns設(shè)置完成后的格式 /returns private WaveFormat SetWaveFormat() { WaveFormat format = new WaveFormat()。 = 。//設(shè)置音頻類型 = 11025。//采樣率(單位:赫茲)典型值: 1102 22050、 44100Hz = 16。//采樣位數(shù) = 1。//聲道 = (short)( * ( / 8))。//單位采樣點(diǎn)的字節(jié)數(shù) = * 。 return format。 //按照以上采樣規(guī)格,可知采樣 1 秒鐘的字節(jié)數(shù)為 22050*2=44100B 約為 43K } 本科生畢業(yè)設(shè)計(jì) 25 代碼 42 /// 創(chuàng)建捕捉緩沖區(qū)對(duì)象 private void CreateCaptureBuffer() { //想要?jiǎng)?chuàng)建一個(gè)捕捉緩沖區(qū)必須要兩個(gè)參數(shù):緩沖區(qū)信息,緩沖設(shè)備。 WaveFormat mWavFormat = SetWaveFormat()。 CaptureBufferDescription bufferdescription = new CaptureBufferDescription()。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1