exoSip 开发者手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
exoSip 开发者手册
1 扩展的eXosip协议栈
1.1 如何初始化libeXosip2
当使用eXosip时,你的首要任务是初始化eXosip上下文和libosip库(语法分析器和状态机)。这是在使用libeXosip2之前一定要完成的。
include
int i;
TRACE_INITIALIZE (6, stdout);
i=eXosip_init();
if (i!=0)
return -1;
//在特定的socket上监听
i = eXosip_listen_addr (IPPROTO_UDP, NULL, port, AF_INET, 0);
if (i!=0)
{
eXosip_quit();
fprintf (stderr, "could not initialize transport layer\n");
return -1;
}
…初始化之后就可以发送消息或者等待eXosip事件的到来…
在前面的代码中,您学习了如何:
初始化osip trace(用- DENABLE_TRACE编译此代码)
初始化eXosip(和osip)堆栈
为信号打开一个套接字(只有UDP要初始eXosip2)
现在你要处理eXosip事件。下面是一些来获得eXosip_event从
在eXosip2堆栈的代码。
eXosip_event_t *je;
for (;;)
{
je = eXosip_event_wait (0, 50);
eXosip_lock();
eXosip_automatic_action ();
eXosip_unlock();
if (je == NULL)
break;
if (je->type == EXOSIP_CALL_NEW)
{
....
....
}
else if (je->type == EXOSIP_CALL_ACK)
{
....
....
}
else if (je->type == EXOSIP_CALL_ANSWERED)
{
....
....
}
else .....
....
....
eXosip_event_free(je);
你将为每个SIP消息的发送收到一个事件,每个事件包含