基于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++教程
评论