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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-局域網(wǎng)即時(shí)聊天程序的設(shè)計(jì)與實(shí)現(xiàn)—論文-在線瀏覽

2025-02-05 18:58本頁(yè)面
  

【正文】 時(shí)期。因此,必須用行之有效的方法對(duì)軟件需求進(jìn)行嚴(yán)格的審查驗(yàn)證,為下一步的總體設(shè)計(jì)打好基礎(chǔ)。局域網(wǎng)中在線用戶之間的聊天包括文本聊天及語(yǔ)音聊天。 下面是文本聊天部分所要完成的功能。 2)與特定用戶之間的聊天窗口中必須提供聊天信息的輸入和聊天信息的顯示功能。 4)當(dāng)輸入完聊天信息以后進(jìn)行發(fā)送,當(dāng)發(fā)送沒(méi)有結(jié)束時(shí),不能進(jìn)行新的聊天內(nèi)容 的輸入。 5) 聊天信息要顯示在聊天窗口中,顯示的內(nèi)容包括:發(fā)送信息、接收信息。 以下是語(yǔ)音聊天部分要完成的功能。 7)與對(duì)方連接以后開(kāi)始語(yǔ)音聊天。 (二 ) 系統(tǒng)性能要求 a.. 時(shí)間性能要求:在實(shí)際應(yīng)用中由于客戶端的大量頻繁的訪問(wèn),服務(wù)器響應(yīng)時(shí)間 應(yīng)該盡可能縮短,對(duì)于有特殊需求的應(yīng)用,還要求達(dá)到實(shí)時(shí)響應(yīng)。 c. 穩(wěn)定性安全性要求:要求軟件盡可能的穩(wěn)定,對(duì)于一般的應(yīng)用系統(tǒng),對(duì)安全 性要求不高,對(duì)于特殊的應(yīng)用,還需要在安全性方面加以保證,所以要相應(yīng)提高服務(wù)器端的配置。在本系統(tǒng)中服務(wù)器端本身也可以是客戶端。 第三章 總體設(shè)計(jì) 經(jīng)過(guò)了需求分析階段的工作,系統(tǒng)必須“做什么”的問(wèn)題已經(jīng)清楚了,現(xiàn)在是決定“怎么做”的時(shí)候了。在這里要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。由于語(yǔ)言聊天是發(fā)送聲音的一端將硬件接口采集到的聲音數(shù)據(jù)通過(guò) Socket 發(fā)送到另外一端,另外一端根據(jù)得到的聲音數(shù)據(jù)調(diào)用硬件接口播放聲音,所以其 核心是聲音數(shù)據(jù)的采集、播放和聲音數(shù)據(jù)的網(wǎng)絡(luò)傳輸。 文本聊天部分主要由文字輸入及發(fā)送、聊天記錄保存、接收文字信息等三個(gè)模塊分成。即通信模塊、聲源采集模塊、聲音數(shù)據(jù)傳輸、音頻再生模塊。 1. 通信模塊:主要功能是接收并連接服務(wù)器端和客戶端接口,負(fù)責(zé)作為服務(wù)器 時(shí)的網(wǎng)絡(luò)端口監(jiān)聽(tīng),并且為客戶端接口的發(fā)送數(shù)據(jù)和接收數(shù)據(jù)進(jìn)行消息處理。 2. 聲源采集模塊:主要功能為負(fù)責(zé)采集客戶端發(fā)出的聲源,把采集到的聲源放到緩沖區(qū)里,為語(yǔ)音傳送建立了基礎(chǔ)。 4. 音頻再生模塊;主要功能是接收聲音數(shù)據(jù)傳輸模塊傳送過(guò)來(lái)的語(yǔ)音數(shù)據(jù)進(jìn)行放音并且釋放內(nèi)存以便于保存采集到的聲源。 5. 至于文字輸入模塊及輸出模塊是為通行模塊提供了文本數(shù)據(jù),并通過(guò)通信模塊進(jìn)行兩個(gè)客戶端之間的文本交互。 第四章 詳細(xì)設(shè)計(jì) 詳細(xì)設(shè)計(jì)階段的根本任務(wù)是確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng),也就是說(shuō),經(jīng)過(guò)這個(gè)階段的設(shè)計(jì)工作,應(yīng)該得出對(duì)目標(biāo)系統(tǒng)的精確描述,從而在編碼階段可以把這個(gè)描述直接翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序。首先,程序初始化網(wǎng)絡(luò),接著客戶端連接到服務(wù)器時(shí),創(chuàng)建接收線程和發(fā)送線程,這樣就可以實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)。 在開(kāi)始進(jìn) 行聊天通信前得先把系統(tǒng)初始化, 系統(tǒng)的初始化過(guò)程為: N Y [圖 3] 系統(tǒng)初始化流程圖 當(dāng)系統(tǒng)完成初始化過(guò)程以后就可以進(jìn)行具體聊天通信了(即文本交互和語(yǔ)音交互)。 以下則是語(yǔ)音聊天的幾個(gè) 模塊具體流程。 N Y N Y [圖 4] 服務(wù)器端的 Socket建立和連接 [圖 5] 客戶端的 Socket建 立和連接 (二 ) 聲源采集模塊 用戶按語(yǔ)音聊天開(kāi)始鍵以后,就開(kāi)始音頻聊天,要進(jìn)行語(yǔ)音數(shù)據(jù)傳送,就得有聲源采集模塊。 (三 ) 聲音數(shù)據(jù)傳輸模塊 聲源采集模塊放到緩沖區(qū)里的語(yǔ)音數(shù)據(jù)經(jīng)過(guò)這個(gè)模塊以后到達(dá)音頻再生模塊。 N Y N Y [圖 6] 聲音數(shù)據(jù)傳輸模塊流程圖 (四 ) 音頻再生模塊 經(jīng)過(guò)處理過(guò)的語(yǔ)音數(shù)據(jù)通過(guò)音頻處理模塊傳送到這個(gè)模塊,當(dāng)接收到語(yǔ)音數(shù)據(jù)以后它將經(jīng)過(guò)錄音的語(yǔ)音數(shù)據(jù)進(jìn)行放音,然后把內(nèi)存釋放出來(lái)以備保存其他緩沖區(qū)里保存的聲源信息。 當(dāng)緩沖區(qū)接收到聲源以后要是內(nèi)存不夠的話就不能及時(shí)把全部語(yǔ)音數(shù)據(jù)保存并傳送,所以經(jīng)過(guò)這個(gè)模塊以后就得把錄音內(nèi)存釋放掉,好讓上一個(gè)模塊及時(shí)得到完成。 開(kāi)始 接收傳送過(guò)來(lái)的語(yǔ)音數(shù)據(jù) 進(jìn)行放音 釋放內(nèi)存到緩沖區(qū) END 第五章 關(guān)鍵代碼分析 經(jīng)過(guò)總體分析和詳細(xì)分析,整個(gè)設(shè)計(jì)有了大概的框圖之后就可以進(jìn)行編程了。 本次設(shè)計(jì)的特點(diǎn)是一個(gè)用戶端既是服務(wù)器端也是客戶端,所以針對(duì)一個(gè)用戶端作為服務(wù)器端或者作為客戶端的時(shí)候的代碼進(jìn)行分析。 If ((*pSocket)) { Cmessg msg。 M_sShowString+=“一個(gè)游客進(jìn)入聊天室了 \n”。 For(pos=()。) { CclientSocket * t=(CclientSocket *)(pos)。msg)。 (pSocket)。 } 二、客戶端連接到服務(wù)器端時(shí)消息處理代碼 void CChatDlg::OnConnecserver() { //TODO:Add your control notification handler code here if(!m_bInit) { BYTE f0,f1,f2,f3。 ((CIPAddressCtrl*)(GetDlgItem(IDC_IPADDRESS)))GetAddress(f0,f1,f2,f3)。 (“ %d.%d. %d. %d,f0,f1,f2,f3)。 ()。 SetDlgItemText(IDC_SHOWTEXT,” Client Connection Succeed” )。 } else { ()。 M_bInit=false。 m_bInit=true。 return。 ()。 M_willchating=FALSE。m_mutex,TRUE)。 SetDlgItemText(IDC_NEWSEND,” 語(yǔ)音聊天 ” )。 ()。 m_dlg=dlg。 Return FALSE。 Return FALSE。 return TRUE。 Csocket::OnAccept(nErrorCode)。 m_aSessionIn=new Carchive(m_sfSocketFile,Carchive::load)。 m_bClose=false。 } //Socket接收到傳輸過(guò)來(lái)的數(shù)據(jù)的消息相應(yīng)函數(shù) void CClientSocket::OnReceive(int nErrorCode) { Csocket::OnReceive(nErrorCode)。 (*m_aSessionIn)。 M_dlgSetDlgItemText(IDC_SHOWTEXT,m_dlgm_sMsgList)。amp。 } int linenum=((Cedit*)(m_dlgGetDlgItem(IDC_SHOWTEXT)))GetLineCount()。 //如果是服務(wù)器端還需要將接收到的數(shù)據(jù)轉(zhuǎn)發(fā)到其他客戶端。pos!=NULL。 If(tm_hSocket!=thism_hSocket)//不是本地 socket { tSendMessage(amp。 } } } } while (!m_aSessionInIsBufferEmpty())。 m_aSessionOutFlush()。 } else { //對(duì)方關(guān)閉了連接 m_bClose=true。 M_dlgCloseSessionSocket(0。 } } //關(guān)閉 socket,需要將串行化相關(guān)的內(nèi)存釋放 void CclientSocket::CloseSocket() { if(m_aSessionIn) { delete_m_aSessionIn。 } if(m_aSessionOut) { delete_m_aSessionOut。 } if(m_sfSocketFile) { delete_m_aSessionOut。 } Close()。 M_bClose=true。 CloseSocket()。 Csocket::OnClose(nErrorCode)。 第六章 測(cè)試 測(cè)試在開(kāi)發(fā)軟件過(guò)程中是一個(gè)不可缺少的部分。我們力求在每個(gè)階段結(jié)束之前通過(guò)嚴(yán)格的技術(shù)審查,盡可能早地發(fā)現(xiàn)并糾正錯(cuò)誤;但是,經(jīng)驗(yàn)表明審查并不能發(fā)現(xiàn)所有的差錯(cuò),此外在編碼過(guò)程中還不可避免地會(huì)引入一些新的錯(cuò)誤。測(cè)試的目的就是在軟件投入生產(chǎn)運(yùn)行之前,盡可能多地發(fā)現(xiàn)并糾正軟件中的錯(cuò)誤。下面將介紹測(cè)試方案,測(cè)試過(guò)程和測(cè)試結(jié)果。 (二)測(cè)試過(guò)程 檢驗(yàn)?zāi)K之間的接口。 B 每個(gè)調(diào)用模塊是否能調(diào)用每個(gè)自己想要調(diào)用的模塊。 二、 功能測(cè)試 (一)測(cè)試方法 采用了黑盒測(cè)試,即檢查 程序功能是否能要求進(jìn)行,是否適當(dāng)?shù)亟邮軘?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性。 A 每個(gè)功能是否按要求正常進(jìn)行。 三、測(cè)試結(jié)果 結(jié)果表明,經(jīng)過(guò)測(cè)試每個(gè)功能都能按預(yù)先要求正常進(jìn)行且速度達(dá)到了預(yù)期的標(biāo)準(zhǔn)。當(dāng)用戶輸入文字信息并發(fā)送時(shí)信息將被傳送到接收方并且能顯示聊天記錄。當(dāng)然,整個(gè)系統(tǒng)在測(cè)試過(guò)程中仍發(fā)現(xiàn)了不少的錯(cuò)誤,但在指 導(dǎo)老師的指導(dǎo)下改正并完善了所發(fā)現(xiàn)的錯(cuò)誤。最重要的是對(duì)進(jìn)行軟件設(shè)計(jì)的整體設(shè)計(jì)流程及思維方法有了深刻的認(rèn)識(shí)。 在設(shè)計(jì)過(guò)程中,對(duì)于我來(lái)說(shuō),由于很多都是新知識(shí),這就迫使我到處查閱相關(guān)資料,學(xué)習(xí)新知識(shí),不僅體會(huì)到 Visual C++編程環(huán)境的強(qiáng)大功能,也對(duì)新接觸到的 Socket 編程和語(yǔ)言處理 API 有了大概的了解。本次局域網(wǎng)即時(shí)聊天程序設(shè)計(jì)主要用了 Visual C++編程環(huán)境,實(shí)現(xiàn)了在 LAN 中在線用戶的文本、語(yǔ)音交互。由于程序是在 TCP/IP 環(huán)境下運(yùn)行,所以分服務(wù)器端和客戶端。 本次設(shè)計(jì)主要著重于語(yǔ)音聊天部分,在本次論文里主要以語(yǔ)音聊天的流程和各模塊之間的關(guān)系及 Socket 處理為主說(shuō)明。s text the pronunciation inte
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1