osip2和eXosip2协议

Osip2和eXosip协议栈的简析(转载) 一篇对eXosip and osip协议栈简析的挺不错的文章,原文引自:http://www.lupaworld.com/bbs/thread-21899-1-1.html  Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈 阅读详情

http://www.cnblogs.com/pengyingh/articles/2474140.html

Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高

eXosip2是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。

exosip2增加了call、dialog、registration、subscription等过程的解析,使得实用性更强。

//========================================================================================================================

osip2协议栈分为三部分:sip协议的语法分析,sip协议的过程分析和协议栈框架。

1>>sip协议的语法分析

  主要是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,

   包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。 

  遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。
  支持MD5加解密算法。支持Authorization、www_authenticate和proxy_authenticate

2>>sip协议的过程分析

       主要是osip2部分,基于RFC3261、RFC3264和RFC3265的sip协议描述过程,围绕transaction这一层来实现sip的解析。 
       Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。

       响应型的应答是指这个应答仅代表对方收到请求。请求经过处理后都必须返回确认型的应答。响应型的应答有1xx,确认型的应答包括2xx、3xx、4xx、5xx和6xx。

      一个transaction由一个请求和一个或多个响应型应答、一个确认型应答组成。

 

3>>sip协议框架

    主要有三部分:底层套接字接收/发送,模块间通信管道,上层调用api接口。

    Osip2并不实现底层套接字的接收/发送,由eXosip2实现;

   上层调用的api接口大致有两类:sip协议的调用接口和sdp协议的调用接口。
   EXosip封装了大部分的sip协议调用接口

//********************************************************************************************************************************//

exosip2协议栈的分析

     exosip是osip2协议的封装和调用。它实现了作为单个sip终端的大部分功能,如register、call、subscription等

     exsiop使用udpsocket套接字实现底层sip协议的接受和奉送,并且封装了sip消息的解释器。

 

参考:http://blog.163.com/haidiniao@126/blog/static/117538091200961093456878/?latestBlog

 

 eXosip_init()是eXosip的初始化函数,我们来看看它的内部实现:

  首行是定义的 osip_t *osip,这在oSIP的官方手册里我们看到,所有使用oSIP的程序都要在最开始处声明一个osip_t的指针,并使用 osip_init(&osip)来初始化这个指针,销毁这个资源使用osip_release(osip)即可。

 

  我们可以在代码中看到很多OSIP_TRACE,这是调试输出宏调用了函数osip_trace,可以用ENABLE_TRACE宏来打开调试以方便我们开发调试。
  其它就是很多的eXosip_t的全局变量eXosip的一些初始化操作,包括最上面的memset (&eXosip, 0, sizeof (eXosip))完全清空和下面的类似eXosip.user_agent = osip_strdup ("eXosip/" EXOSIP_VERSION)的exosip变量的一些初始值设置,其中有一个eXosip.j_stop_ua = 0应该是一个状态机开关,后面可以看到很多代码检测这个变量来决定是否继续流程处理,默认置成了0表示现在exosip的处理流程是就绪的,即ua是 not stop的。
  

  osip_set_application_context (osip, &eXosip)是比较有意思的,它让下面的eXosip_set_callbacks (osip)给osip设置大量的回调函数时,能让osip能访问到eXosip这个全局变量中设置的大量程序运行时交互的信息,相当于我们在VC下开启一个线程时,给线程传入的一个void指针指向我们的MFC应用程序的当前dialog对象实例,可以用void *osip_get_application_context (osip_t * osip)这个函数来取出指针来使用,不过好象exosip中并没有用到它,可能是留给个人自已扩展的吧:)

 

 

osip_set_cb_send_message (osip, &cb_snd_message) SIP消息发送回调函数

这个函数可能是最重要的回调函数之一,消息发送,包括请求消息和回应消息,一般情况下,状态机的状态就是由它控制的,发起一个消息初始化一个状态机,回应一个消息对状态机修改,终结消息发送结束状态机……


//==================================================================================

exosip协议示例: 

linphone  http://download-mirror.savannah.gnu.org/releases/linphone/docs/liblinphone/group__tutorials.html

 

Modules

  Basic buddy status notification
  Chat room and messaging
  Basic call
  Basic registration


 

 

参考:http://blog.163.com/haidiniao@126/blog/static/117538091200961093238143/


osip2与exosip2协议栈源码深度解析与实战 尽管 WebRTC、gRPC、MQTT 等新技术层出不穷,但 SIP 仍在 VoIP、视频会议、安防监控等领域牢牢占据主导地位。而之所以历经二十年仍被广泛采用,正是因为它们体现了极简、可移植、可定制的工程哲学。它不像某些框架那样“什么都帮你做好”,而是给你一套乐高积木,让你自由搭建想要的形态。无论是做一个极简软电话,还是构建百万级SIP代理服务器,你都能从中找到灵感。 阅读详情

相关推荐

osip2 exosip2开源SIP协议栈源码深度解析

为了满足特定业务需求(如计费标识、QoS标记),常需引入私有头域(Private Header),通常以前缀X-开头。

weixin_30838971的博客 568

eXosip2研究笔记

1.全局变量eXosip的初始化全局变量eXosip是eXosip2库工作的核心,它通过osip成员变量与osip库中的osip对应起来,整个协议栈的实现,都是在eXosip的基础上运行的。首先我们看看eXosip_t结构体。  struct eXosip_t  {    struct eXtl_protocol *eXtl;    char transport[10];    char *user_agent; /*消息中会添加这个头域,类似于打广告! */    eXosip_call_t *j_cal

O(∩_∩)O~~ Ёvery Dāy 5184

图书馆SIP2接口测试工具

用于规范、指导RFID智能图书管理系统系统所使用的SIP2接口模块的二次开发。本指南适用于遵循3M的SIP2协议、通过Socket进行通讯的所有图书管理系统接口的开发。SIP2协议,全称为:Standard Interchange Protocol Version 2.0,该协议由3M公司提出,用于图书馆的图书管理系统与各类硬件设备之间进行数据交换的标准通讯协议。RFID智能图书管理系统,通过该协议与图书馆的现有图书管理系统实现无缝连接。

exosip2协议栈原理分析以及总结

转自:微点阅读https://www.weidianyuedu.com/content/0417775689505.html exosip2协议栈学习总结 1、exosip2协议栈介绍 eXosip是osip2的一个扩展协议集,它部分封装了osip2协议栈,使得它更容易被使用。 使用 sip 协议建立多媒体会话是一个复杂的过程,exosip 库开发的目的在于隐藏这种复杂性。正如它的名称所表示的,eXosip2 - the eXtended osip Library,它扩展了osip 库,实现..

ysds20211402的博客 1947

华为Atlas 300I推理卡驱动安装避坑指南:不同安装方式的选择与优化

本文详细解析华为Atlas 300I推理卡驱动安装的三种主流方式(.run、.rpm和源码编译),提供关键环境检查步骤、安装流程优化建议及常见问题解决方案,帮助开发者高效完成芯片推理卡部署并规避典型安装陷阱。

q9w8e7r6t5的博客 431

从零搭建uniapp+vue3+ts+tailwindcss多端兼容开发环境

本文详细介绍了如何从零搭建uniapp+vue3+ts+tailwindcss多端兼容开发环境,包括环境准备、TailwindCSS集成、小程序兼容性解决方案以及样式优化技巧。通过实战步骤和常见问题解答,帮助开发者快速掌握这套技术栈,提升开发效率。

weixin_28693309的博客 323

基于osip2/eXosip2协议栈的应用开发之(1):翻译:eXosip开发手册

1、扩展协议栈eXosip1.1 如何初始化libeXsip2库    当使用eXosip是,你首先要完成的工作就是初始化eXsip上下文和libosip库(解析器和状态机)。在使用libeXosip前这个工作必须完成。那么如何初始化呢,我们看下面的代码:include int i; TRACE_INITIALIZE (6, stdout); i=eXosip_init(); if (i!=0

好久都没有更新博客喽,工作原因只能总结在内部机上:-( 8326

PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)

该篇是学习使用PYNQ开发板,实际上是对ZYNQ PL端AXI_CDMA 核的应用。实验步骤参照官网的教程,一步一步地做,但是由于在硬件资源布置方面与官方教程稍有出入,所以在SDK的源码里也进行了修改。 AXI_CDMA特性: 如果是使用ZYNQ 7系列芯片(可能其他Xilinx也是通用的),xilinx的AXI_CDMA 核有两种传输模式:轮询(poll)和中断(...

YGLeeeon的博客 3521

FFmpeg4.3系列之28:SIP+eXosip+pjsip小白入门

敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。我将带领大家一起来学习:学习sip协议的基本原理、流程、结构;编译开源库源码osip,eXosip,pjsip(包括windows和Linux两套环境);使用eXosip或pjsip进行案例实战;具体内容包括:  1.sip协议讲解,包括原理、结构、协议内容、流程分析等。2.osip与eXosip的源码编译,使用eXosip进行案例实战并详解流程。3.pjsip的源码编译,使用pjsip进行案例实战并详解流程。

EMS案例:BMS传导发射超标整改案例

BMS作为新能源汽车的关键部件,其EMC性能直接影响整车的安全性和可靠性。本文通过一个实际的传导发射整改案例,详细展示了从问题定位、分析到解决方案实施的全过程。希望这些经验能够为从事类似产品设计的工程师提供有价值的参考,在未来的产品开发中避免类似问题,设计出更加可靠、稳定的BMS产品。EMC设计是一门结合理论与实践的艺术,只有通过不断积累经验、深入理解电磁场理论,并紧密结合实际应用场景,才能在复杂的电磁环境中设计出鲁棒性强的电子产品。

m0_56451176的博客 272

【声呐技术】基于人工智能的拖曳阵声呐声学数据处理系统 SEA公司AI辅助拖曳阵系统

KraitSense是SEA公司开发的紧凑型被动拖曳阵声呐系统,核心传感器为KraitArray细线拖曳阵列。该系统专为小型舰艇、无人水面艇(USV)和无人潜航器(UUV)设计,通过人工智能与机器学习技术实现水下声学数据的自动化采集、处理与分类。系统与Mind Foundry公司开发的软件平台深度集成,形成端到端的智能反潜战(ASW)解决方案。

u012133341的博客 957

编译osip2与eXosip2静态库,一文搞定!

添加osipparser2/ 与osip2/再编译。

路虽远,行则将至 916

详解AUTOSAR:什么是AUTOSAR?(理论篇—1)

AUTOSAR是由全球各大汽车整车厂、汽车零部件供应商、汽车电子软件系统公司联合建立的一套标准协议,是对汽车技术开发一百多年来的经验总结。

不脱发的程序猿 1万+

eXosip(osip2的扩展协议集)

Osip2和eXosip协议栈结构简介 - [SIP]2009-06-01 | Tag:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://leezen.blogbus.com/logs/40304064.html找不到这篇文章的原始出处了,转自:http://blog.chinaunix.net/u/1251/showar

whyhonest的专栏 1681

MATLAB - 利用非线性模型预测控制(Nonlinear MPC)来控制四旋翼飞行器

本示例展示了如何利用非线性模型预测控制(MPC)为四旋翼飞行器设计一个跟踪轨迹的控制器。

机器人控制与仿真应用 4432

【异常】OpenClaw 飞书端 OpenClaw: access not configured. Pairing code: [] Ask the bot owner to approve with

摘要: OpenClaw飞书机器人交互中出现的access not configured报错,是因用户或组织未配置访问权限触发的拦截提示。报错包含组织单元ID和配对校验码,需管理员审批开通权限。普通用户需提交完整报错信息给管理员处理;管理员可通过执行标准化命令单次审批,或批量配置组织白名单优化权限管理。建议提前梳理权限范围、及时同步组织架构变更,并定期审计权限列表以确保安全合规。

奶爸的编程之路,也就一周冷个三天 371

osip和mysql_osip2和eXosip2协议

http://blog.youkuaiyun.com/flyhawk007j2me/article/details/6830586Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高eXosip2是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。exosip2增加了call、dialog、...

weixin_42406333的博客 372

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Osip2和eXosip协议栈的简析

Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。 一、介绍 Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得

1590

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 值得推荐的C/C++框架和库
下一篇: Centos系统下,基于osip2+eXosip2的SIP开发
L_Office_Software
博客等级 码龄11年 3粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值