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

正文內(nèi)容

網(wǎng)絡(luò)電話軟件設(shè)計論文-資料下載頁

2025-09-29 10:37本頁面

【導(dǎo)讀】網(wǎng)絡(luò)電話,也稱為IP電話,近幾年它的發(fā)展非常之迅速。本文設(shè)計并實現(xiàn)了一個計算。其中詳細(xì)講解了軟件設(shè)計中的重點和難點,分析了軟件中語音的采集和播放,在局域網(wǎng)上用此軟件來做通話實驗,音質(zhì)和時延都達(dá)到了電話的效果,說明此軟件達(dá)。到了IP電話的基本要求。

  

【正文】 Listen 成員函數(shù),表示處于等待連接狀態(tài),等待客戶機(jī)方發(fā)出申請連接( Connect)的消息,當(dāng)接收到此消息后, CServerSocket 類的 OnAccept 消息響應(yīng)函數(shù)即會響應(yīng),此時再構(gòu)造一個 CMsgSocket 類的對象 (用來傳輸數(shù)據(jù) ),然后調(diào)用 CServerSocket類的 Accept 成員函數(shù)表示接受連接申請,若此函數(shù)返回真值,則表示連接成功??蛻魴C(jī)方則只需構(gòu)造一個 CMsgSocket 類的對象,調(diào)用此對象的 Connect 成員函數(shù),申請連接即可。 服務(wù)器方 客戶機(jī)方 New CserverSocket,生成服務(wù)器對象 new CmsgSocket,生成連接對象 Create,創(chuàng)建 Create,創(chuàng)建 Listen, 處于監(jiān)聽狀態(tài) Connect,申請連接 New CmsgSocket,生成連接對象 Accept,接 受連接 Send,發(fā)送數(shù)據(jù) Send,發(fā)送數(shù)據(jù) Receive,接收數(shù)據(jù) Receive,接收數(shù)據(jù) 按上述順序建立連接后,服務(wù)器方和客戶機(jī)方都調(diào)用 CMsgSocket 對象的 Send 函數(shù)來發(fā)送數(shù)據(jù),當(dāng)接收到數(shù)據(jù)時, CMsgSocket 類的 OnReceive 消息響應(yīng)函數(shù)即會響應(yīng),再調(diào)用Receive 函數(shù)來接收數(shù)據(jù),這樣服務(wù)器方和客戶機(jī)方就可以進(jìn)行數(shù)據(jù)通信了。 在程序中要注意網(wǎng)絡(luò)消息的響應(yīng),如接收到數(shù)據(jù),有客戶申請連接,已連接上,對方已斷開等等,與一般的消息響應(yīng)函數(shù)不同,它已經(jīng)集成在 CSocket 類的成 員函數(shù)中,而不用消息響應(yīng)宏。如在 CServerSocket 類中重載 CSocket 類的成員函數(shù) OnAccept,即可以處理申請連接的消息,在 CMsgSocket 類中重載 CSocket 類的成員函數(shù) OnReceive,即可以處理接收到數(shù)據(jù)的消息。重載 CSocket 類的成員函數(shù) OnClose 函數(shù),即可以處理對方網(wǎng)絡(luò)已斷開的消息。另外用 CSocket 類的成員函數(shù) GetPeerName 可以得到對方的 IP 地址,在程序中可以保存下來,供以后連接使用,用戶不必再重新輸入。 21 22 第六章 軟件具體實現(xiàn) 軟件的頁面設(shè)計 服務(wù)器端的界面設(shè)計 圖一 23 客戶端的界面設(shè)計 圖二 軟件的運行方式 軟件服務(wù)器端的界面如上圖一所示,運行本系統(tǒng)時必須首先運行服務(wù)器程序。 軟件客戶端的界面如上圖一所示,運行客戶端程序后,可以與已知運行的服務(wù)器進(jìn)行連 接,連接方法: ( 1) 首先輸入用戶名,該用戶名為客戶端在服務(wù)器上注冊的名稱(可以任意輸入)。 ( 2) 選擇用戶的通信協(xié)議(推薦選擇 TCP/IP協(xié)議)。 ( 3) 輸入服務(wù)器的 IP 地址或服務(wù)器名稱。 ( 4) 點擊連接按鈕 。 如果服務(wù)器通過客戶端的請求則表示客戶端與服務(wù)器已經(jīng)建立了連接。這是客戶端的聯(lián) 系人里會出現(xiàn)與該服務(wù)器建立連接的所有客戶端的名稱。 客戶端可以通過選擇聯(lián)系人來請求與選擇的聯(lián)系人建立通話連接,當(dāng)然,被選擇 24 的客戶端也可以拒絕通話請求。如果被請求方同意了通話請求則表明了雙方建立了連接。并可以進(jìn)行通信了。任何一方在發(fā)送消息欄里輸入的信息都會直接傳到通信對象的接受消息欄中。當(dāng)然客戶端也可以選中“語音通信”,將自己的語音發(fā)送給對方,實現(xiàn)語音通信。 通話完畢,雙方都可以選擇聯(lián)系人中的“ No one to talk”停 止與對方交談,類似與掛斷電話。 用戶依據(jù)網(wǎng)絡(luò)狀況的好壞,可以采用壓縮和不壓縮的方式來傳輸語音(本程序還未實現(xiàn))。在局域網(wǎng)內(nèi)用不壓縮的方式就可以達(dá)到很好的效果。 實踐證明,本軟件在實際運行中穩(wěn)定可靠,在局域網(wǎng)上音質(zhì)和延遲都基本上達(dá)到了電話的效果。 軟件的具體實現(xiàn) 處理客戶端請求建立與服務(wù)器的連接 服務(wù)器收到客戶端的連接請求,根據(jù)客戶端傳過來的協(xié)議和 IP 地址建立客戶端和服務(wù)器間的連接,添加該客戶信息進(jìn)客戶列表,更新所有客戶端列表和服務(wù)器端列表,將服務(wù)器的 socket 設(shè)置成繼續(xù)偵聽狀態(tài)。具體 實現(xiàn)如下:根據(jù)此結(jié)構(gòu)體 typedef struct _VTMSG { BYTE m_ucIdentity。 // Identifies the message BYTE m_ucCmd。 // message mand BYTE m_ucMsgType。 // The message type UINT m_lLength。 // size of the message block BYTE m_pData[VT_MAX]。 // message data } VTMSG, *LPVTMSG。 中的 m_ucCmd 來確定用戶傳過來的是什么信息。如果接受客戶端的數(shù)據(jù)不是客戶端斷開信息,即 m_ucCmd!=VTCMD_SESSIONCLOSE,則分析客戶端傳過來數(shù)據(jù)的類型并處理該數(shù)據(jù) .當(dāng) m_ucCmd= VTCMD_REGNAME,則說明客戶端想要與服務(wù)器建立連接,服務(wù)器收到該信息,則根據(jù)客戶端傳過來的協(xié)議和 IP 地址建立與該客戶端的連接。并且把該客戶信息添加到客戶列表,并將其狀態(tài)設(shè)置成 AVAILABLE。此時該 客戶端的信息便在客戶下拉列表中顯示出來,這樣該客戶便可以接受其它想與其聊天的任何客戶端的請求,但只能接受一個客戶 25 的請求。 處理客戶端向另一客戶端發(fā)送連接請求 服務(wù)器收到該客戶端的請求后,服務(wù)器遍歷所有客戶列表,處理客戶端的響應(yīng)請求。具體實現(xiàn)方法如下:當(dāng)此結(jié)構(gòu)體 typedef struct _VTMSG { BYTE m_ucIdentity。 // Identifies the message BYTE m_ucCmd。 // message mand BYTE m_ucMsgType。 // The message type UINT m_lLength。 // size of the message block BYTE m_pData[VT_MAX]。 // message data } VTMSG, *LPVTMSG。 中的 m_ucCmd= VTCMD_REQSESSION 時,則表明客戶端請求與另一客戶端建立連接。當(dāng)服務(wù)器收到此信息后,將遍歷所有的客戶端,如果該客戶端存在并且空閑,則給被 請求的客戶端發(fā)送信息,請求連接。此時將兩個客戶端的狀態(tài)置為 SESSION SETUP。 處理客戶端的響應(yīng)請求 當(dāng)客戶端同意與另一客戶端建立連接時,服務(wù)器將收到的信息轉(zhuǎn)給另一客戶端,如果同意建立連接,此時服務(wù)器將更新用戶列表,把兩個客戶端的狀態(tài)設(shè)置為 IN SESSION .此時兩個客戶端便可進(jìn)行聊天了。但不能再接受其它客戶端的聊天請求。 處理客戶端的通信 服務(wù)器將收到的客戶端的信息原封不動的轉(zhuǎn)發(fā)給與其進(jìn)行聊天的另一客戶端。 處理客戶端斷開通話連接的請求 根據(jù)此結(jié)構(gòu)體 26 typedef struct _VTMSG { BYTE m_ucIdentity。 // Identifies the message BYTE m_ucCmd。 // message mand BYTE m_ucMsgType。 // The message type UINT m_lLength。 // size of the message block BYTE m_pData[VT_MAX]。 // message data } VTMSG, *LPVTMSG。 如果 m_ucCmd=VTCMD_SESSIONCLOSE 則表明客戶端斷開已經(jīng)建立的通話。 當(dāng)某一客戶端想要斷開與另一客戶端的連接時,只需在聯(lián)系人一欄中選擇 NO ONE TO TALK。此時將斷開與另一客戶端的聯(lián)接。服務(wù)器將收到的信息轉(zhuǎn)給另一客戶端,通知其與另一客戶端已經(jīng)斷開連接。此時服務(wù)器更新用戶列表。將請求斷開的客戶端的狀態(tài)置為AVAILABLE。 處理客戶端斷開與服務(wù)器的連接 當(dāng)客戶端想與服務(wù)器斷開連接時,只需點擊關(guān)閉按鈕,此 時就斷開了與服務(wù)器的連接。服務(wù)器更新用戶列表。如果客戶端斷開連接,則更新所有的服務(wù)器端 /客戶端列表(刪除所有客戶端的該客戶信息) 27 致謝 在本次畢業(yè)設(shè)計 和論文撰寫的 過程中, 得到了 指導(dǎo) 教 師 陳立巖 老師 悉心指導(dǎo)和大力支持 。 陳立巖 老師身上認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平使我 獲益匪淺。無論在理論上還是在實踐中,都給與我很大的幫助,使我得到不少的提高 , 這對于我以后的工作和學(xué)習(xí)都 是 一種巨大的幫助 。在此表示由衷的感謝! 另外, 許多同學(xué)也給 予了 我很大的幫助,幫助解決了不少的難點, 提出了許多寶貴意見,為 本系統(tǒng)的完成貢獻(xiàn)了他們的力量, 使得畢業(yè)設(shè)計 和論文 能及時開發(fā)完成,這里 對他們 表示 深深的 感謝。 28 結(jié)論 本軟件從總體上已經(jīng)達(dá)到了 IP 電話的基本要求,但是由于作者的時間和條件有限,軟件也存在一些不足和需要進(jìn)一步完善的地方。最大的不足是每秒 的語音數(shù)據(jù)在我們國家當(dāng)前的 Inter 上還是顯得過高,本軟件中語音壓縮率還有待繼續(xù)提高。 其次在本軟件中從通用性的目的出發(fā),采用 TCP/IP 協(xié)議進(jìn)行網(wǎng)絡(luò)傳輸。實際上 IP 電話的語音傳輸和視頻傳輸以及語音和視頻的壓縮方式等都有相應(yīng)的國際標(biāo)準(zhǔn),如果作為一個嚴(yán)格的商業(yè)軟件 ,則必須采用這些標(biāo)準(zhǔn)。 另外在軟件的整體功能上還可以進(jìn)一步加強(qiáng)。例如語音通話中可以加入錄音功能,實現(xiàn)起來也并不困難,將內(nèi)存中的語音數(shù)據(jù)寫入文件即可,同理也可以實現(xiàn)語音信箱的功能。其它一些重要的功能,如多人之間的文件傳輸,多方通話等等,都可以加入軟件中。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1