基于GBT28181:SIP协议组件开发-----------第二篇SIP组件开发原理
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3937590.html,qq:1269122125。
上一节中讲的SIP组件,即GBT28181SipComponent动态.so库工程,生成libGBT28181SipComponent.so库文件和IGBT28181Comm.h编程接口,在该库中实现了REGISTER,
MESSAGE,NOTIFY,SUBSCRIBE,INVITE,ACK,BYE,CALL_MESSAGE等GB/T28181-2011 《安全防范视频监控联网系统信息传输、交换、控制技术要求》要求的SIP方法,
后期有新的需求可以添加。该库已经成功用于电网的多家视频安防企业中,性能稳定。Sip协议组件使用了开源的SIP协议栈OSIP2和开源的扩展协议集Exosip2,结合《技术要求》进行
了修改和扩展,使得模块符合《技术要求》对Sip通信的需求。
一.SIP组件主要依赖库列表
库名 | 功能 |
Osip2 | 一个开源的SIP协议栈,使用C编写,主要提供解析SIP和SDP消息的API和事物处理的状态机。 |
Exosip2 | 是对Osip2协议栈的封装和调用,作为Osip2的一个扩展协议集,使得Osip2更容易被使用。 |
Boost | 一个准标准库,相当于对STL的的延续和扩充。 |
Loki | C++的模板类库 |
二.SIP组件对外主要功能
Sip组件提供的接口与主要功能一一对应,接口的主要函数如下:
(1)启动Sip通信服务
int_t IGBT28181Comm ::StartSip(const string_t ip, int_t port = 5060) ;
(2)停止Sip通信服务
void_t IGBT28181Comm::StopSip();
(3)发送Sip命令数据
int_t IGBT28181Comm::Downcast(const SipRequestInfo& info);
(4)Sip服务请求完成回调
typedef void_t (*ResponseCallback)(const SipRequestInfo& info,void_t* user);
void_t IGBT28181Comm::SetResponseCallback(ResponseCallback callback,void_t* user) ;
这部分不想共享源代码,头文件和库文件的下载地址如下:
需要库源代码的可以联系作者。