原創文章,引用請保證原文完整性,尊重作者勞動,原文地址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) ;
這部分不想共享源代碼,頭文件和庫文件的下載地址如下:
需要庫源代碼的可以聯系作者。