SoftPhone(eXosip)学习笔记系列之用户注册

用户注册:注册类整理
int CSipRegister::Register(ConfigMessage CfgMsg,UserMessageUsMsg)
{
int i;
int retVal;
osip_message_t *reg = NULL;

i = eXosip_init ();
if (i != 0)
{
TRACE0("--Couldn'tinitialize eXosip!n");
return -1;
}
else
{
TRACE0("--eXosip_initsuccessfully!n");
}
//侦听的端口
i = eXosip_listen_addr (IPPROTO_UDP, NULL,CfgMsg.contact_port, AF_INET, 0);
if (i != 0)
{
eXosip_quit ();
TRACE0 ("--Couldn'tinitialize transport layer!n");
return -2;
}
eXosip_lock();
char from_url[160]={0};
char proxy_url[160]={0};
char contact_url[160]={0};
SoftPhone(eXosip)学习笔记系列之用户注册
sprintf(from_url,"%s<sip:%s@%s>",UsMsg.m_TelNum,UsMsg.m_TelNum,CfgMsg.from_url);
sprintf(proxy_url,"sip:%s:%d",CfgMsg.proxy_url,CfgMsg.proxy_port);
sprintf(contact_url, ""%s"<sip:%s@%s:%d>",UsMsg.m_TelNum,UsMsg.m_TelNum,CfgMsg.contact_url,CfgMsg.contact_port);
int regid =eXosip_register_build_initial_register(from_url,proxy_url,contact_url, 3600, ®);
if (regid<0)
{
eXosip_unlock();
return -3;
}
eXosip_clear_authentication_info();//去除上次加入的错误认证信息
//添加认证信息
if(eXosip_add_authentication_info(UsMsg.m_TelNum,UsMsg.m_TelNum, UsMsg.m_PassWd, "md5", NULL))
{
TRACE0("--Add_authentication_infofailedn");
eXosip_unlock();
return -4;
}
//发送注册信息
retVal = eXosip_register_send_register (regid,reg);
if (retVal != 0)
{
TRACE0("register_send_register failedn");
eXosip_unlock();
return -5;
}
eXosip_unlock ();
return retVal;
}
我把这个注册过程分为六步:
1.sip初始化.
eXosip_init ();
2.侦听的端口
eXosip_listen_addr(IPPROTO_UDP, NULL, CfgMsg.contact_port, AF_INET, 0);
这里需要注意的是CfgMsg.contact_port是一个与对方建立连接所需的端口,这里我设置为12463.
3.构造注册信息
eXosip_register_build_initial_register()
4.去除上次加入的错误认证信息
eXosip_clear_authentication_info();
5.添加注册证书
eXosip_add_authentication_info()
6.发送注册信息
eXosip_register_send_register ();

这6步之后一个注册就建立了.
下面的做法是捕获PROXY发送回来的消息,
这里我通过开辟新线程的方法捕获,因为这个一个循环.
while (pDlg->m_LoginEventsFlag)
{
eXosip_event_t *event;
event =eXosip_event_wait (0,50);//侦听是否有消息到来
eXosip_lock ();
eXosip_default_action(event);
eXosip_unlock();
if (event==NULL) {
continue;
}
//下面是一个SWITCH语句对捕获的消息进行处理.
}
主要就这两个消息:EXOSIP_REGISTRATION_SUCCESS,EXOSIP_REGISTRATION_FAILURE

捕获PROXY发送回来的消息,抓包可以看到先得到一个401应答,之后再得到一个200OK应答,这样就可以判断注册成功了.
这样,一个注册就建立了.

  

爱华网本文地址 » http://www.aihuau.com/a/25101017/365260.html

更多阅读

密室逃脱系列之碧绿色房间游戏攻略 密室逃脱碧绿色房间

密室逃脱,又叫TAKAGISM ,一种密室逃脱类游戏,一般需要玩游戏者在游戏中寻找线索,一步一步地走出密室。这类游戏的玩法很简单,只需用鼠标即可。整个游戏过程都是在一间房子里进行的,游戏的主人公不知道为什么被困在这里(每集都交待了不同的

恒殊:天鹅系列之《天鹅·光源》6月1日全国上市

最世文化 年度重磅推荐重塑经典 颠覆想象——恒殊SWAN系列之《天鹅·光源》2011年6月1日全国上市1我是魔鬼的女儿,我叫奥黛尔。黑夜赋予了我美丽,我在午夜的时刻苏醒,仰起头,两颗星星落在我的眼睛里。第一朵夜的玫瑰吸收月华造就我

转载 何马小说偵探韓峰系列之(又名蝙蝠山莊) 何马网

原文地址:何马小说偵探韓峰系列之<古堡失窃案>(又名蝙蝠山莊)作者:夕阳黄金路前几天,一位名叫金絲蜘的网友,在给我留言中,问到几个何马曾经写过的网络作品.我在我的电腦文档中去査找核实.偶然发現这篇小说,读后觉得有点意思.虽然何马

泰国经典恐怖片系列之——《鬼4忌》 泰国经典恐怖片

泰国经典恐怖片系列之——《鬼4忌》《鬼4忌》又名《惨死》。在泰国的宗教信仰中认为,因老而寿终正寝的人,称之为顺终,除此之外的就称为非顺终称为凶死。凡凶的人,入棺之前都需要到其死亡地「引魂」,同时请僧道到场并诵经超渡亡魂。《惨

中小学教师职业道德规范学习笔记

中小学教师职业道德规范学习笔记一、依法执教。学习和宣传马列主义、毛泽东思想和邓--同志建设有中国特色社会主义理论,拥护党的基本路线,全面贯彻国家教育方针,自觉遵守《教师法》等法律法规,在教育教学中同党和国家的方针政策保持一

声明:《SoftPhone(eXosip)学习笔记系列之用户注册》为网友他城我做王分享!如侵犯到您的合法权益请联系我们删除