
resip
heibao111728
一定要拥有一家自己的公司
展开
-
resip学习笔记之BYE消息何时发送
在resip协议栈中没有直接给用户提供BYE消息的发送接口,当我们需要发送BYE消息的时候,可以通过InviteSession类的end()发送bye消息。原创 2020-01-28 22:14:59 · 546 阅读 · 0 评论 -
resip学习笔记之DialogSet删除
DialogSet是resip协议栈中特别重要的一个类,我们通过走读代码发现有只有DialogSet对象的创建,没有看到Dialog Set对象的删除,那么DialogSet对象是在哪里删除的呢?答案是DestroyUsage类,DestroyUsage是一个继承自ApplicationMessage的消息,当Dialog应该删除的时候resip协议栈会创建一个DestroyUsage消息,并将它...原创 2019-10-19 19:13:11 · 279 阅读 · 0 评论 -
resip学习笔记之Timer
在resip中Timer的实现方式是将“定时时长+系统现在时间”插入一个priority_queue中,然后再从priority_queue依此弹出已到时的timer对象进行相关联的任务处理,priority_queue是标准模板库中的一个结构,它的作用是按指定的比较方法按需排列队列中的元素,priority_queue的使用参见如下代码。#include<queue>#inc...原创 2019-10-16 22:48:21 · 292 阅读 · 0 评论 -
resip学习笔记之Dialog、DialogSet、AppDialog与AppDialogSet的区别与联系
首先AppDialog与AppDialogSet都是继承自Handled,所以这两个类都可以通过句柄获取。AppDialog由AppDialogSet创建,Dialog由DialogSet创建AppDialogSet与DialogSet是一一对应关系...原创 2019-08-15 21:51:16 · 462 阅读 · 0 评论 -
resip学习笔记之句柄Handle
相信很多同学都听说过句柄,也看过一些对句柄的解释。但是句柄到底是什么?他是怎么工作的,可能真正能回答出来的人不多,今天我们借助resip协议栈对句柄的实现来详细聊聊句柄。首先作为句柄它最重要的功能就是能唯一指定一个内存对象,注意这里是“指定”,不是c++指针的“指向”。那句柄要怎么才能做到唯一指定一个内存对象呢?想象一下,如果一个类A中有一个成员变量id(通过特定机制保证类A的多个变量拥有...原创 2019-05-28 21:39:32 · 497 阅读 · 0 评论 -
resip学习笔记(消息路由)
我们知道,sip消息的格式有很多如sip:34020000002000000001@192.168.0.1sip:34020000002000000001@3402000000当消息的request line 头部中域名部分(@之后的部分)为IP地址时我们都知道,直接将该消息发送至该指定的ip地址中去就可以了,但是当域名部分不是IP地址时,是域名如"3402000000", 这时我们需...原创 2019-05-12 18:35:15 · 843 阅读 · 0 评论 -
resip学习笔记之repro
repro是resip协议栈提供的一个功能完善的sip服务器,但是其并不是按照常规使用resip协议栈的方式来创建的,比如从repro中我们没有看到往DialogUserageManager(DUM)中添加注册消息的处理器,原因是在repro中repro中DUM只是用来处理register和subscribe消息,其余消息是由proxy处理的,proxy和DUM一样都是继承自Transaction...原创 2019-05-12 08:51:15 · 1244 阅读 · 0 评论 -
基于resip协议栈的b2bua代理服务器设计
我们知道GB28181中要求中心信令服务器以b2bua模式进行设计。通过对resip协议栈的学习,我们可以了解到,在resip协议栈中AppDialog是用来指定端到端的一段对话关系的,所以我们可以通过AppDialog来实现b2bua的左右两个呼叫。参考:/*** description:* implement b2bua call core class.*...原创 2019-05-20 22:19:33 · 738 阅读 · 0 评论 -
resip学习笔记之指定需要鉴权认证的信令
在使用resip协议栈的时候我们发现只要将需要鉴权认证设置为true,那么受到的所有消息都会进行鉴权认证,必须等客户端在发送的消息头中添加Authorization字段,并且通过鉴权认证之后才会去进行后续的处理,而很多业务需求中我们只需要让sip协议栈对register消息进行鉴权认证,其余的消息不需要鉴权认证。要达到这个目的很简单,只需要我们编写新类继承自ServerAuthManager类,然...原创 2019-05-20 22:11:19 · 523 阅读 · 0 评论 -
Windows平台下reSIProcate项目使用
首先从官网上下载源码,进行编译,中途需要更改部分错误,更改后可以编译运行的项目地址在:疑问:1、为什么不需要BerkelyDB就能创建*.db文件?因为注意事项:1、在repro.exe的当前目录下必须存在repro.config配置文件。2、如果提示“libmysql.dll”文件找不到,可以在resiprocate-1.8.14\contrib\...原创 2019-04-23 19:05:17 · 862 阅读 · 0 评论 -
Resip学习笔记(注册消息鉴权认证)
通过研究源码我们不难发现,resip协议栈中ServerAuthManager类的作用是验证客户端发来的注册消息。通过源码我们也可以发现该类是一个虚基类,留给我们requestCredential()接口去实现验证逻辑。...原创 2019-04-27 19:30:12 · 1321 阅读 · 0 评论 -
Resip学习笔记(sip服务器对初次registration信令回复407而不是401)
首先我们讨论一下sip服务器回复401与407有什么区别,看了一下rfc3261,发现没有明确的说明,只是说401是UAS和registar回复的应答,而407是proxy回复的应答。但是很多时候proxy就是UAS,在GB28181里面有什么讲究呢?从网络上看到这么一种解答不知准确与否:401 Unauthorized,明确提示是未授权。这个应答是由UAS和注册服务器产生的。常见场景是Reg...原创 2019-04-25 21:58:08 · 3742 阅读 · 0 评论 -
Resip学习笔记(register)
由于工作需要最近研发GB28181服务器,对比了几个协议栈后最后决定使用resip协议栈。由于国标规定注册信令需要完成鉴权认证功能,resip要求鉴权需要继承ServerAuthManager并实现对应功能,并且在初始化ServerAuthManager的时候需要将challengeThirdParties参数设置为"true"。...原创 2019-03-13 16:30:38 · 934 阅读 · 0 评论 -
ReSip学习笔记(Handle)
在resip协议栈中使用了类似于MFC的句柄,句柄的实现为Handle,该类是一个模板类,实现了指针运算符"->"与"*"运算符,定义句柄的方式如下:typedef Handle<AppDialogSet> AppDialogSetHandle;typedef Handle<AppDialog> AppDialogHandle;typedef Handle&l...原创 2019-03-07 14:16:30 · 984 阅读 · 0 评论 -
Resip之h_ProxyAuthorizations
阅读过Resip源码的程序员应该都被h_ProxyAuthorizations对象疑惑过,因为通过全局搜索都搜索不到该对象在哪里定义。实际上该对象是通过宏定义的,定义发生在Headers.cxx文件中。且看如下整理:#define defineHeader(_enum, _name, _type, _rfc) \class H_##_enum : publi...原创 2019-03-14 10:50:15 · 306 阅读 · 0 评论 -
Linux平台下reSIProcate项目使用
1、下载源代码,官方地址:http://www.resiprocate.org/Main_Page2、执行:" ./configure --prefix=/usr/local/resip "--prefix=/usr/local/resip:的作用是控制生成的Makefile文件,在后续执行" make install " 时将项目头文件和库文件安装在/usr/local/resip路劲下...原创 2018-09-27 14:44:04 · 1231 阅读 · 0 评论 -
resip学习笔记(项目细节)
问题描述:最近准备通过resip协议做一个GB28181的信令网关服务(即把非国标信令转换成国标信令,然后发送至国标平台中),发送invite请求时发现协议栈会自动将我手动放在sdp中的IP地址修改成网关程序所在的主机地址。经过排查发现问题的原因是在使用时为SipUA设置了sdp的outboundDecorator,该Decorator会在最终发送消息前将sdp中的ip地址修改为本机的ip,...原创 2018-09-07 14:58:14 · 1592 阅读 · 0 评论 -
resip学习笔记(sip消息的接收与处理)
在简绍sip消息的接收与处理之前我先们说一点意外获取到的信息(不知正确否?)Sipstack与DialogUsageManager(FIFO是其父类TransactionUser的成员变量)中各维护一个fifo但两个fifo本质上不是同一个fifo。但是里面存放的消息都是同一个类型,一般情况下要发送的消息都会放在sipstack的FIFO中,而从远端接收到的响应一般情况下会放在DialogUsag...原创 2018-09-03 11:01:13 · 3304 阅读 · 0 评论 -
resip学习笔记(sip消息的产生和发送)
本篇博文的目的是告诉大家如何彻底弄清楚resip协议栈的工作流程,resip作为最著名的sip协议栈之一,如果是接触网络媒体通信、网络会议或者是GB28181的同志相当有必要认认真真学习一下resip协议栈。对于任何一个sip协议栈的学习我们只要弄清楚下面3点,可以说是已经掌握了这个协议栈的骨架了,先把骨架弄清楚再继续学习细节一些的知识点,能节省很多精力。1、sip信令如何产生?2、si...原创 2018-09-03 09:38:13 · 4262 阅读 · 0 评论