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

正文內(nèi)容

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

2025-02-01 10:57本頁面
  

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