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

正文內(nèi)容

基于ip網(wǎng)絡(luò)公務(wù)電話系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-23 21:05 本頁面
 

【文章內(nèi)容簡介】 向無連接的套接字操作,能夠更快速的傳輸數(shù)據(jù),滿足語音通信功能。另外,本次設(shè)計(jì)還定義了三個重要的結(jié)構(gòu)體:SignalPacket、NumberListNode和Numberlist。SignalPacket實(shí)現(xiàn)了對信令包的設(shè)計(jì),本次設(shè)計(jì)的所有信令都是用的這個結(jié)構(gòu)體的結(jié)構(gòu);NumberListNode和Numberlist利用了單鏈表結(jié)構(gòu)實(shí)現(xiàn)了對系統(tǒng)配置中的列表的設(shè)計(jì)。二、各個類的基本介紹下面簡要介紹一下各個類所完成的功能:CIPPHONEDlg類:首頁的對話框類。這是整個程序的入庫函數(shù),即程序每次從開啟到終止時經(jīng)歷的全過程。在這個類中我們實(shí)現(xiàn)了對每個類的邏輯調(diào)用和各線程的實(shí)現(xiàn),從而完成IP公務(wù)電話的所有功能。CSysSettingDlg類:系統(tǒng)配置的對話框類。它通過對話框,讓用戶通過控件完成對包括IP地址、公務(wù)號碼、公務(wù)編號、組號的配置。并能使用戶可以添加、修改、刪除、清空和顯示配置情況,CHistoryDlg類:通話記錄的對話框類。它能顯示用戶通過這個軟件所進(jìn)行的通話時間、通話時長以及通信對端的用戶信息等相關(guān)信息。CNumberList類:號碼列表類,負(fù)責(zé)號碼表的維護(hù)。CCaptureSound類:負(fù)責(zé)語音數(shù)據(jù)的采集及發(fā)送。首先創(chuàng)建并初始聲音采集設(shè)備,創(chuàng)建語音采集緩沖區(qū),設(shè)置緩沖區(qū)的通知位置,創(chuàng)建一個發(fā)送線程,把緩沖區(qū)中的語音數(shù)據(jù)發(fā)送到指定的用戶(單呼),或著小組中其他用戶(組呼)。CPlaySound類:負(fù)責(zé)語音數(shù)據(jù)的接收及播放。首先創(chuàng)建并初始化因聲音播放設(shè)備,創(chuàng)建多個聲音緩沖區(qū),創(chuàng)建一個接收線程,把接收到的語音數(shù)據(jù)存入到對應(yīng)的聲音緩沖區(qū)中,循環(huán)播放緩沖區(qū)中的語音數(shù)據(jù)。CManageSound類:負(fù)責(zé)管理語音采集和播放設(shè)備的創(chuàng)建和釋放。CSignalSerSocket類:異步套接字類,負(fù)責(zé)數(shù)據(jù)發(fā)送接收。CSignalAcpSocket類:異步套接字類,負(fù)責(zé)數(shù)據(jù)發(fā)送接收。CSignalCliSocket類:異步套接字類,負(fù)責(zé)數(shù)據(jù)發(fā)送接收。CSignalDeal類:信令處理類,負(fù)責(zé)信令處理。CSoundSocket類:負(fù)責(zé)語音數(shù)據(jù)的發(fā)送及接收,采用UDP方式,單呼和組呼的語音數(shù)據(jù)都使用這個類來傳輸。三、類設(shè)計(jì)圖。該圖顯示了所有類之間的關(guān)聯(lián),以及每個類里面一部分構(gòu)造函數(shù)、構(gòu)析函數(shù)、成員函數(shù)和成員變量。 類圖設(shè)計(jì)第四節(jié) 信令機(jī)制設(shè)計(jì)在信令包格式中我們設(shè)計(jì)了包括標(biāo)志位、子標(biāo)志位、IP地址、掩碼、公務(wù)編碼、號碼、組號、話機(jī)狀態(tài)、緩存順序等,其中通過前兩種標(biāo)志共同完成對信令包類型的確定,以完成話機(jī)工作下的各種信令。具體實(shí)現(xiàn)是在CsignalDeal類中定義了SignalPacket的結(jié)構(gòu)體。 信令包格式 在信令標(biāo)志位中,我們將詳細(xì)列出標(biāo)志位所代表的各個含義,其中信令消息主要分為三類,請求信令、回復(fù)信令和通知信令。具體標(biāo)志位含義如下: 信令標(biāo)志標(biāo)志位標(biāo)志位類型數(shù)值設(shè)計(jì)中規(guī)定的代表含義REQUESTINGFlag0x01通話請求消息REQUEST_SINGLEChilFlag0x02單呼請求消息REQUEST_GROUPChilFlag0x03組呼請求消息REQUEST_BOARDChilFlag0x04廣播請求消息REPLYINGFlag0x05通話回復(fù)消息REPLY_WAITTINGChilFlag0x06回復(fù)等待消息REPLY_REFUSEREQUESTChilFlag0x07回復(fù)拒絕消息NOTIFYINGFlag0x08通話告知消息NOTIFY_ACCEPTChilFlag0x09通知接收消息NOTIFY_REFUSEChilFlag0x0A通知拒絕消息NOTIFY_ENDINGChilFlag0x0B通知結(jié)束消息UPDATINGFlag0x0C通知更新消息(暫未使用)第五節(jié) 界面操作設(shè)計(jì)為了實(shí)現(xiàn)公務(wù)電話的功能以及各種功能,我設(shè)計(jì)出了三個界面來用于用戶的交互。設(shè)計(jì)如下:首先是撥號界面,也就是主界面的設(shè)計(jì):該界面分為了信息提示區(qū)、撥號鍵盤區(qū)、功能鍵盤區(qū)和本機(jī)信息區(qū)。 主界面系統(tǒng)設(shè)置界面的設(shè)計(jì): 系統(tǒng)配置界面通話記錄界面: 通話記錄界面第六節(jié) 話機(jī)狀態(tài)設(shè)計(jì)在話機(jī)狀態(tài)設(shè)計(jì)中,我們充分考慮了公務(wù)IP電話的各個狀態(tài),設(shè)計(jì)了話機(jī)的狀態(tài)標(biāo)志。在話機(jī)的工作中,通過對狀態(tài)的判斷完成對鈴音的播放和信令的處理,同時又將信令的處理結(jié)果通過話機(jī)狀態(tài)來顯示出來。在本系統(tǒng)的設(shè)計(jì)中,以下是具體的狀態(tài)設(shè)計(jì)。 狀態(tài)標(biāo)志狀態(tài)標(biāo)志標(biāo)志值設(shè)計(jì)中規(guī)定的代表含義IDLE0x01空閑狀態(tài)(掛機(jī)狀態(tài))IDLE_PHONERING0x02空閑振鈴狀態(tài)IDLE_BEFOREEND0x03空閑狀態(tài)(特定主動掛機(jī)情形下)HOLDING0x04摘機(jī)狀態(tài)HOLDING_DIALING0x05摘機(jī)撥號狀態(tài)HOLDING_WAITING0x06摘機(jī)撥號后等待狀態(tài)HOLDING_DELAYING0x07摘機(jī)撥號延遲狀態(tài)HOLDING_BACKRING0x08摘機(jī)撥號收到回鈴音狀態(tài)HOLDING_BUSY0x09摘機(jī)撥號收到忙音狀態(tài)HOLDING_TALKING0x0A通話狀態(tài)HOLDING_TALKING_SINGLE0x0B單呼通話狀態(tài)HOLDING_TALKING_GROUP0x0C組呼通話狀態(tài)HOLDING_TALKING_BOARD0x0D廣播通話狀態(tài)HOLDING_TALKING_ENDING0x0E通話結(jié)束狀態(tài)(特定被動話機(jī)情形下)在話機(jī)的眾多狀態(tài)中,用戶的操作可以改變當(dāng)前話機(jī)的狀態(tài),在信令的傳送和處理后都能導(dǎo)致狀態(tài)的轉(zhuǎn)變,下面將展示狀態(tài)的轉(zhuǎn)移圖。 狀態(tài)轉(zhuǎn)移圖第七節(jié) 系統(tǒng)程序線程設(shè)計(jì)本系統(tǒng)設(shè)計(jì)中,我們采用了多線程技術(shù)對語音采集、語音播放、信令處理、鈴音播放、撥號采集、信息提示等等進(jìn)行處理,利用多個線程協(xié)同完成話機(jī)的各個功能。下面展示的是本系統(tǒng)的線程處理。 線程設(shè)計(jì)第八節(jié) 本章小節(jié)本章詳細(xì)介紹了本次仿真系統(tǒng)的設(shè)計(jì)思路。設(shè)計(jì)目標(biāo)是仿真一個IP公務(wù)電話系統(tǒng),其系統(tǒng)框架分為界面操作、業(yè)務(wù)邏輯、數(shù)據(jù)傳輸三層。并分析了12個類和3個結(jié)構(gòu)體在系統(tǒng)結(jié)構(gòu)中所完成的功能,介紹了信令機(jī)制設(shè)計(jì),界面設(shè)計(jì)、話機(jī)狀態(tài)設(shè)計(jì)以及線程設(shè)計(jì)。第五章 IP網(wǎng)絡(luò)電話關(guān)鍵程序?qū)崿F(xiàn)第一節(jié) 用于語音傳輸?shù)拿嫦蚍沁B接的套接字本次設(shè)計(jì)用CSoundSocket類來實(shí)現(xiàn)語音數(shù)據(jù)的傳輸,該類是用異步套接字的方式進(jìn)行的一系列套接字操作。它完成了套接字中版本協(xié)商、套接字創(chuàng)建、綁定端口以及單呼和組呼的接收和傳輸,并且關(guān)閉套接字的操作。該類的主要成員函數(shù)有:create(UINT LocalPort,UINT RemotePort,char * pAddr)、Bind()、JoinMulticast()、SendTo(char *pBuf,int iLen)、RecvFrom(char *pBuf,int iLen)和Close()。以下是實(shí)現(xiàn)以上函數(shù)所實(shí)現(xiàn)的功能介紹:Create(UINT LocalPort,UINT RemotePort,char * pAddr):首先進(jìn)行了版本協(xié)商,這也是最高版本,支持異步套接字的函數(shù)。然后利用WSASocket函數(shù)創(chuàng)建一個支持組播和單呼的異步套接字接口,其套接字類型為SOCK_DGRAM,也就是說是面向無連接的套接字。最后將本地端口、對端端口和目的IP地址用傳入的參數(shù)傳給自己的成員變量。 Bind():這是用于單呼的套接字綁定,先定義一個SOCKADDR_IN的對象sockadd,然后對里面的成員進(jìn)行賦值,最后用bind函數(shù)將套接字綁定到LocalPort端口上。 JoinMulticast():這是用于組播的套接字綁定,先定義一個SOCKADDR_IN的對象addr,然后對里面的成員進(jìn)行賦值,然后進(jìn)行了組播的設(shè)置,并且屏蔽掉本機(jī)數(shù)據(jù),最后綁定各端口的套接字。 SendTo(char *pBuf,int iLen):先重新定義一個SOCKADDR_IN的對象ADDr,然后對里面的成員進(jìn)行賦值,最后返回一個sendto函數(shù),實(shí)現(xiàn)發(fā)送數(shù)據(jù)的功能。 RecvFrom(char *pBuf,int iLen):先定義一個整型變量存放送來的SOCKADDR_IN對象的長度,再定義一個SOCKADDR_IN的對象RemoteAddr,最后返回一個recvfrom函數(shù),實(shí)現(xiàn)接受數(shù)據(jù)的功能。 Close():用closesocket函數(shù)關(guān)閉所用的套接字。第二節(jié) 用于信令傳輸?shù)拿嫦蜻B接的套接字由第一章我們可以發(fā)現(xiàn),面向非連接的套接字的客戶機(jī)與服務(wù)器的流程是一樣的,所以在編寫面向非連接的套接字時,我們可以將所有客戶服務(wù)器操作用同樣的函數(shù)完成。但面向連接的套接字則比較麻煩,所以這次就采用了將客戶機(jī),服務(wù)器的程序分成不同的類來完成:CSignalCliSocket、CSignalAcpSocket和CSignalSerSocket類分別完成自己的功能。它們都是從CAsyncSocket類繼承過來的。CAsyncSocket類為我們使用Socket套接字簡化了許多繁瑣的過程,大大提高了我們編程的效率。對于Socket的WSAStartup和bind的綁定,可以用create函數(shù)調(diào)用替代,IP地址類型轉(zhuǎn)換、主機(jī)名和IP地址轉(zhuǎn)換的過程中許多復(fù)雜的變量類型都被簡化成字符串和整數(shù)操作。CAsyncSocket::Create()有一個參數(shù)指明了你想要處理哪些Socket事件,這個Socket默認(rèn)就被用作了異步方式,并且創(chuàng)建了一個CSocketWnd窗口對象,并且將這個SOCKET與該窗口對象關(guān)聯(lián),以讓該窗口對象處理來自Socket的事件(消息),然而CSocketWnd收到Socket事件之后,只是簡單地回調(diào)虛函數(shù)。所以我們只需要在虛函數(shù)中添加所需的代碼。CsignalCliSocket類CsignalCliSocket是客戶端的套接字程序,它的成員函數(shù)有OnConnect(int nErrorCode)、OnReceive(int nErrorCode)和OnClose(int nErrorCode)。OnConnect(int nErrorCode):調(diào)用了CasyncSocket的成員函數(shù)OnConnect,實(shí)現(xiàn)客戶機(jī)向服務(wù)器套接字的連接請求。 OnReceive(int nErrorCode):先調(diào)用了CasyncSocket的成員函數(shù)OnReceive,通知套接字緩沖中有數(shù)據(jù),再用Receive函數(shù)接收數(shù)據(jù),調(diào)用成功時,返回接收到的字節(jié)數(shù)。再將數(shù)據(jù)存入SignalPacket的信令包中交給CsignalDeal類處理。OnClose(int nErrorCode):調(diào)用了CasyncSocket的成員函數(shù)OnClose,通知該套接字連接上的對應(yīng)套接字已經(jīng)被相關(guān)進(jìn)程終止了。CSignalAcpSocket和CsignalSerSocket類CSignalAcpSocket和CsignalSerSocket類是服務(wù)器端的程序它們的主要成員函數(shù)有:OnAccept(int nErrorCode)、OnClose(int nErrorCode) 和OnSend(int nErrorCode) OnAccept(int nErrorCode):調(diào)用了CasyncSocket的成員函數(shù)OnAccept(nErrorCode),通知監(jiān)聽套接字現(xiàn)在可以調(diào)用Accept成員函數(shù)來接收懸掛的連接請求,再調(diào)用Accept成員函數(shù)接受請求。 OnSend(int nErrorCode):調(diào)用了CasyncSocket的成員函數(shù)OnSend,通知套接字現(xiàn)在可以調(diào)用Send成員函數(shù)發(fā)送數(shù)據(jù)。 OnClose(int nErrorCode):通知該套接字連接上的對應(yīng)套接字已經(jīng)被相關(guān)進(jìn)程終止了,釋放內(nèi)存。第三節(jié) 通話過程的實(shí)現(xiàn)由第二章的第四節(jié)和第五節(jié),我們簡單了解了我們通話的流程,本節(jié)介紹這些流程在程序中的實(shí)現(xiàn)。由流程圖我們可以知道,用戶摘機(jī),撥號,掛機(jī)等操作都是在用戶的撥號界面(主界面)進(jìn)行的,所以我們要實(shí)現(xiàn)通話流程,就應(yīng)該在IPPHONEDlg類中的按鍵函數(shù)中實(shí)現(xiàn)。于是,我們首先應(yīng)該在摘機(jī)按下是添加一個撥號進(jìn)程DialingThread,然后再撥號進(jìn)程中實(shí)現(xiàn)撥號超時、送忙音等操作,最后撥號成功后判斷是單呼還是組呼,并進(jìn)行單呼處理或組呼處理。下面分別介紹單呼和組呼處理的實(shí)現(xiàn)一、單呼處理單呼處理分為主叫和被叫,一臺主機(jī)可能是主叫也可能是被叫,所以要分為主叫和被叫來編寫程序。1.主叫端處理首先創(chuàng)立一個信令包結(jié)構(gòu)體的對象,然后將本機(jī)的信息寫入這個信令包中,然后在列表中找到撥出的號碼,在信令包中添加對端的ip號和單呼請求以及本機(jī)狀態(tài),創(chuàng)建一個CsignalCliSocket類的對象,綁定單呼端口和對端ip地址后,調(diào)用create函數(shù)創(chuàng)建套接字,并用connect函數(shù)向?qū)Χ朔?wù)器發(fā)出連接請求,等連接成功后將信令包發(fā)出,然后進(jìn)入單呼主叫端通話進(jìn)程。在單呼主叫端通話進(jìn)程中,我們首先也是將本機(jī)的信息寫入一個信令包中,然后判斷此時話機(jī)的狀態(tài),如果不是HOLDING_TALKING,則進(jìn)行掛機(jī)等一系列操作。如果是HOLDING_TALKING,則調(diào)用ManageSound類的Create函數(shù)和Start函數(shù)進(jìn)行語音的采集和錄音并且通信。2.被叫端處理被叫端程序相對比較簡單,而且與主叫端比較相似。首先創(chuàng)立一個CsignalAcpSocket類的對象,然后進(jìn)入單呼被叫端通話進(jìn)程。我們同樣先將本機(jī)的信息寫入一個信令包中,判斷話機(jī)是否進(jìn)入HOLDING_TALKING狀態(tài)并判斷話機(jī)振鈴是否超時。最后判斷此時話機(jī)的狀態(tài),如果不是HOLD
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1