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

       说明:本文的内容是根据官方的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...),并为你发送信息。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值