`

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

    博客分类:
  • SIP
 
阅读更多

用户注册:注册类整理
int CSipRegister::Register(ConfigMessage CfgMsg,UserMessage UsMsg)
{
 int i;
 int retVal;
 osip_message_t *reg = NULL;
 
 i = eXosip_init ();
 if (i != 0)
  {
  TRACE0("--Couldn't initialize eXosip!\n");
  return -1;
  }
 else
  {
  TRACE0("--eXosip_init successfully!\n");
  }
 //侦听的端口
 i = eXosip_listen_addr (IPPROTO_UDP, NULL, CfgMsg.contact_port, AF_INET, 0);
 if (i != 0)
  {
  eXosip_quit ();
  TRACE0 ("--Couldn't initialize transport layer!\n");
  return -2;
  }
 eXosip_lock();
 char from_url[160]={0};
 char proxy_url[160]={0};
 char contact_url[160]={0};
 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_info failed\n");
  eXosip_unlock();
  return -4;
 }
 //发送注册信息
 retVal = eXosip_register_send_register (regid, reg);
 if (retVal != 0)
 {
  TRACE0 ("register_send_register failed\n");
  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应答,这样就可以判断注册成功了.
这样,一个注册就建立了.

分享到:
评论

相关推荐

    基于SIP的SoftPhone的设计与实现

    1. **注册功能**:用户通过SoftPhone向代理服务器注册自己的信息,以便服务器能够在需要时找到该用户。 2. **发起请求**:当用户希望通过SoftPhone发起一次通话时,SoftPhone将向代理服务器发送请求,并处理来自...

    Avaya 2050 IP Softphone 使用手册

    Avaya 2050 IP Softphone 是一款专为呼叫中心设计的软件电话解决方案,它基于Avaya Communication Server 1000平台,旨在为用户提供高效、灵活的语音通信体验。这份使用手册详细介绍了如何设置、配置和操作Avaya ...

    SoftPhone使用手册

    SoftPhone使用手册是一款为AI-Contact系列呼叫中心系统的第三方应用程序提供的指导文档。该手册详细介绍了如何通过AgentOcx控件与应用服务器软件进行集成,实现电话控制功能。AgentOcx控件使用TCP协议与AgentServer...

    编译通过的Sipek.SoftPhone

    代码从https://code.google.com/p/sipeksdk/下载下来并且略微修改后的Sipek.SoftPhone; pjsipdll.dll是最新基于pjproject-2.3编译通过; http://download.csdn.net/detail/caiqin19880823/8183549

    softphone for win

    softphone for win下最好的软件电话,支持sip和h323!

    softphone seting

    Avaya Softphone 是一款专为Windows平台设计的软电话客户端,它使得用户能够在计算机上实现类似于传统电话的功能,接入Avaya的网络呼叫中心。本指南将详细解释如何安装并初始化这款软件。 **1. Avaya IP Phone 的...

    基于SIP的SoftPhone的设计与实现.pdf

    - **用户注册模块**:包含用户注册信息输入功能,向服务器发送注册请求,保持与SIP网络的连接。 - **多媒体通话控制模块**:实现SIP用户代理(UA)功能,控制会话的建立、修改和终止。 ### 关键技术解析 #### 属性...

    Sipek.SoftPhone_softphone_sipek_DEMO_sip_together9zf_

    "DEMO"部分是Sipek.SoftPhone的实战展示,它通常包括了软电话客户端的基本功能,如注册、呼叫、接听、挂断、静音、扬声器切换等。开发者可以通过这个DEMO了解Sipek框架的实际操作流程,快速学习如何利用Sipek进行软...

    Acrobits Softphone

    很好用的Andriod SIP电话,音质很好,SIP设置可选

    uckefu-softphone.zip

    如果需要使用,记得更改js里面的url,端口号最好不要更改,当你使用端口号不能登录的时候再更改成自己的端口号,其次删除电弧好吗,删除按钮无效,得copy,剪切才有效

    softphone软电话ocx

    它定义了用户代理(UAs)、代理服务器、重定向服务器、注册服务器等多种角色,构成了SIP网络的基本架构。 2. **软电话(Softphone)**:软电话是运行在个人电脑、智能手机或平板电脑上的应用程序,通过互联网连接...

    20100 Softphone Test Plan v1.0.docx

    Softphone是一种软件电话应用,允许用户通过互联网进行语音和视频通话。这份测试计划详细列出了对Softphone各项功能的测试用例,确保其在不同场景下能正常工作。 测试计划首先介绍了文档的范围,即测试Softphone在...

    ENUM softphone 安装使用及SDK说明

    - SIP注册服务器:用于用户的登录,确保UAS能被其他用户找到。 2. ENUM介绍与ENUM过程 ENUM是E.164电话号码映射协议,通过DNS系统将电话号码转换成域名。例如,电话号码+43 1 5056416经过以下步骤转换: - 清除非...

    IPB Softphone Advanced 2.15.35.49 Setup.exe

    IPB Softphone Advanced 2.15.35.49 Setup.exe 试用期30天! 未找到破解方法

    ringcentral-softphone-js:适用于JavaScript的RingCentral Softphone SDK

    适用于JavaScript的RingCentral Softphone SDK ringcentral-web-phone和此项目有什么区别? 专为客户端设计,仅适用于浏览器。 该项目最初是为服务器和桌面设计的。 它不需要浏览器即可运行。 它也可以在浏览器中...

    uckefu-softphone_UCkefu_呼叫中心_web电话_basketodl_

    通过Web电话,用户可以在浏览器上直接进行语音通话,无需安装额外的桌面应用,极大地提高了通信的便利性。这种技术的核心在于WebRTC(Web Real-Time Communication),这是一种开放标准,允许Web浏览器进行实时通信...

    X-Lite SIP VoIP Softphone 3.0

    《X-Lite SIP VoIP Softphone 3.0:经典IP电话软件的探索与解析》 在现代通信技术中,SIP(Session Initiation Protocol)和VoIP(Voice over Internet Protocol)扮演着至关重要的角色。X-Lite 3.0,这款经典的SIP...

    softphone:兼容Python 3的软件电话,支持音频流

    软电话 上构建的与python 3兼容的软件电话。 要使用流功能,请使用适合您需要的音频回调类。... 创建一个以通过pip install softphone进行pip install softphone 。 添加对多个同时呼叫的支持。 遗漏了什么?

    Softphone:软电话

    它将允许您对用户进行身份验证并管理对twilio客户端的访问。 处理铃声和“前进”功能。 当有电话传入软件电话时,客户端将响铃并转到桌面的前端。 自更新组件。 您可以使用更新组件来更新应用程序的某些部分。 ...

    网络视频电话创建(VoIP Video Softphone) 9.7 绿色免费版

    《网络视频电话创建(VoIP Video Softphone) 9.7 绿色免费版》是一款基于C#编程语言开发的网络电话应用,它利用VoIP(Voice over Internet Protocol)技术,实现了高质量的音视频通话功能。VoIP是一种通过互联网进行...

Global site tag (gtag.js) - Google Analytics