您的位置:首页 > 其它

eXosip用户手册:1.1 如何初始化libeXosip2

2012-09-04 22:30 781 查看
说明:本文的内容是根据官方的eXosip_User_Manual来翻译,为了省时间提高效率,部分内容是意译,部分内容个人觉得没有必要,所以不翻译。后续的相关文章亦如此。

1.1 如何初始化libeXosip2

使用eXosip时,第一步工作是初始化eXosip和libosip库(解析器和状态机)。在使用libeXosip2前必须必须先做这一步。

#include <eXosip2/eXosip.h>

int i;

i = eXosip_init(); // 初始化eXosip和osip协议栈

if (i != 0)
return -1;

i = eXosip_listen_addr (IPPROTO_UDP, NULL, 5060, AF_INET, 0); // 打开信号socket

if (i != 0) // 传输层初始化失败
{
eXosip_quit();

return -1;
}


然后可以发送消息,等待并处理eXosip事件。
eXosip_event_t *je = NULL;

while (1)
{
je = eXosip_event_wait(0,50); // 侦听是否有消息到来

eXosip_lock();
eXosip_default_action(je);
eXosip_unlock ();

if (je == NULL) // 没有接收到消息
continue;

switch (je->type)
{
case EXOSIP_MESSAGE_NEW:
break;

case EXOSIP_CALL_INVITE:
break;

case EXOSIP_CALL_ACK:
break;

case EXOSIP_CALL_CLOSED:
break;

case ...:
break;

default:
break;
}

eXosip_event_free(je);
}


每当发送一个SIP消息,都会收到一个事件。每个事件包含受影响事务的原始请求,以及触发有效事件的最后应答,

你可以从这些信息获取所有的头部,并存储起来,以方便后续的操作或者显示。

例如:当收到一个呼叫传输REFER请求时,你可以检索“refer-To”头部:

osip_header_t *referto_head = NULL;
i  = osip_message_header_get_byname(evt->sip, "refer-To", 0, &referto_head);
if (referto_head == NULL || referto_head->value == NULL)


eXosip_event包含呼叫标识符、注册信息、传入订阅、呼出订阅等。这些标识符将会被API用于控制呼叫、注册、传入或呼出订阅,这些API将会建立默认的带SIP头的信息头(From, To, Call-ID, CSeq, Route, Record-Route,Max-Forward...),并为你发送信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: