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