基于Windows CE的SIP軟件電話的設(shè)計(jì)與實(shí)現(xiàn)
3.2.1 注冊(cè)
注冊(cè)的實(shí)現(xiàn)過程首先是由客戶端向代理服務(wù)器發(fā)出REGISTER注冊(cè)請(qǐng)求,并等待服務(wù)器返回響應(yīng)消息??蛻舳吮仨氃谑盏角耙粋€(gè)REGISTER請(qǐng)求的最終響應(yīng)之后或者前一個(gè)REGISTER請(qǐng)求超時(shí)的情況下,才能發(fā)送一次新的注冊(cè)請(qǐng)求,注冊(cè)流程和對(duì)應(yīng)的SIP協(xié)議棧API 函數(shù)調(diào)用或協(xié)議棧的事件通知分別如圖2(B)和(A)。
圖2 注冊(cè)流程及對(duì)應(yīng)的SIP協(xié)議棧函數(shù)調(diào)用或事件通知 |
3.2.2 呼叫
本設(shè)計(jì)的SIP軟件電話有兩種呼叫模式:注冊(cè)呼叫和Peer To Peer呼叫。如果是呼叫一個(gè)公網(wǎng)的SIP用戶或是同一個(gè)私網(wǎng)的SIP用戶之間進(jìn)行呼叫,就可以直接找到對(duì)方,而不必要通過代理服務(wù)器。下面以注冊(cè)呼叫為例,終端注冊(cè)成功后就可以進(jìn)行呼叫。一個(gè)通過代理服務(wù)器的成功呼叫流程如圖3所示。
圖3 語音通信程序流程 |
oSIP/eXosip對(duì)消息的報(bào)告有2種工作模式:事件模式和回調(diào)模式。本設(shè)計(jì)采用事件模式, 通過函數(shù)eXosip_event_wait定時(shí)輪詢獲取SIP事件。SIP信令的實(shí)現(xiàn)如表2 。
3.3 語音通信模塊
語音通信模塊主要是對(duì)語音進(jìn)行采樣、編碼壓縮等處理,并封裝成能在IP 網(wǎng)絡(luò)上傳輸?shù)腞TP 包,接收端收到后解碼,播放。
c++相關(guān)文章:c++教程
評(píng)論