exosip的注册方法

注册函数:

int CMessageDialog::SipRegisterSend(int expires)
{
sipExpires = expires;


char from[128];
char proxy[128];
char host[128] = {0};


sprintf(host, "%s", Dlg->m_strServer.GetBuffer(Dlg->m_strServer.GetLength()));

snprintf(from, 128, "<sip:%s@%s:%d>", m_strMessExten.GetBuffer(m_strMessExten.GetLength()), host, SipPort);
snprintf(proxy, 128, "sip:%s:%d", host, MessPort);

osip_message_t *reg = NULL;

char localip[128];
eXosip_guess_localip (AF_INET, localip, 128);

eXosip_lock ();
int ret = eXosip_register_build_initial_register(from, proxy, NULL, expires, &reg);//连续重复运行出错eXosip_register_send_register运行两次后才能运行
eXosip_unlock ();
if(0 > ret)
{
//AfxMessageBox("register init Failed!");
return 1;
}

eXosip_lock ();
ret = eXosip_register_send_register(ret, reg);
eXosip_unlock ();
if(0 != ret)
{
//AfxMessageBox("register send Failed!");
return 1;
}


sipReg = reg;


Sleep(500); //等待401验证完成

return 0;
}



401验证

 if(401 == uac_e->response->status_code)
{
//4o1 Unauthorized register again
// 先清除鉴权信息,再应用新输入的鉴权信息 
/*eXosip_lock ();
eXosip_clear_authentication_info();
eXosip_add_authentication_info(pMainWnd->m_strMessExten.GetBuffer(pMainWnd->m_strMessExten.GetLength()), pMainWnd->m_strMessExten.GetBuffer(pMainWnd->m_strMessExten.GetLength()), pMainWnd->m_strMessPwd.GetBuffer(pMainWnd->m_strMessPwd.GetLength()), "md5", NULL);
eXosip_unlock ();*/

//pMainWnd->SipRegisterSend(60);
eXosip_register_build_register(uac_e->rid, pMainWnd->sipExpires, &(pMainWnd->sipReg));
eXosip_register_send_register(uac_e->rid,pMainWnd->sipReg);


eXosip_event_free (uac_e);
continue;
}


心跳注册:

//超时,重新注册
eXosip_lock ();
eXosip_automatic_refresh();
eXosip_unlock ();


参考:http://blog.csdn.net/zblue78/archive/2008/11/17/3319078.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值