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