Exosip分析

Posted 百鸣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Exosip分析相关的知识,希望对你有一定的参考价值。

Exosip是一个开源的SIP协议栈,用于实现SIP客户端和服务器的功能。它在C语言中实现了SIP协议的所有功能,并提供了一个易于使用的API接口,使开发人员可以轻松地构建自己的SIP应用程序。

一、Exosip的架构

Exosip的架构基于事件驱动模型,它使用exosipeventwait()函数等待SIP事件,并将事件分派到处理程序中。当Exosip收到一个SIP消息时,它将消息转换为一个事件,并将该事件添加到事件队列中。然后,Exosip调用exosipeventwait()函数等待事件的到来。一旦事件到达,Exosip将事件分派到相应的处理程序中。

二、Exosip的API接口

Exosip的API接口是面向对象的,它使用C语言中的结构体和函数指针来实现。开发人员可以使用这些结构体和函数指针来构建自己的SIP应用程序。以下是一些常用的Exosip API:

  1. exosip_init():初始化Exosip库。

  2. exosipsetoption():设置Exosip库的选项。

  3. exosipregisterbuildinitialregister():构建初始注册请求。

  4. exosipregistersendinitialregister():发送初始注册请求。

  5. exosipeventwait():等待SIP事件。

  6. exosip_lock():锁定Exosip库。

  7. exosip_unlock():解锁Exosip库。

  8. exosipcallbuildinitialinvite():构建初始邀请请求。

  9. exosipcallsendinitialinvite():发送初始邀请请求。

三、Exosip的优势

  1. 易于使用的API接口:Exosip的API接口是易于使用的,开发人员可以轻松地构建自己的SIP应用程序。

  2. 可移植性:Exosip可以在各种操作系统和硬件平台上运行,包括Linux、Windows和嵌入式系统等。

  3. 开源:Exosip是一个开源项目,任何人都可以自由地使用、修改和分发它。

  4. 高度可扩展:Exosip支持多种SIP扩展,如SIP SIMPLE、SIP MESSAGE、SIP INFO等。

  5. 高性能:Exosip使用事件驱动模型,具有高效的处理速度和低延迟。

四、Exosip的应用场景

Exosip可以用于各种SIP应用程序的开发,如SIP客户端、SIP服务器、SIP Proxy等。以下是一些常见的Exosip应用场景:

  1. VoIP电话:Exosip可以用于开发VoIP电话应用程序,使用户可以进行语音通话和视频通话。

  2. IM应用程序:Exosip支持SIP SIMPLE和SIP MESSAGE扩展,可以用于开发即时通讯应用程序。

  3. 呼叫中心:Exosip可以用于开发呼叫中心应用程序,使客户可以与客服人员进行语音通话和视频通话。

  4. 会议系统:Exosip可以用于开发多方会议系统,使多个用户可以进行语音通话和视频通话。

总之,Exosip是一个功能强大、易于使用、高可扩展和高性能的SIP协议栈,可以满足各种SIP应用程序的需求。

vs2019编译osip和eXosip库及测试示例

1.环境准备及编译源码下载:

系统:Winodws10

编译环境:VS2019

源码下载链接:

http://mirror.ossplanet.net/nongnu/exosip/

 

http://ftp.twaren.net/Unix/NonGNU//osip/

 

https://c-ares.haxx.se/download/

 

下载完,新建工程目录,解压文件:

 

打开exosip\\platform\\vsnet文件夹下的libcares.vcxproj,开始编译

报错,

如果需要就添加SSH的库源码,如果不需要就去掉编译依赖,点击工程eXosip, 右键选择属性,配置属性->c/c+±>预处理器->预处理器定义,去掉 HAVE_OPENSSL_SSL_H

 

修改\\osip\\platform\\vsnet目录下面的osip2.def、osipparser2.def两个文件,具体如下:

打开osip2.def文件,在最末尾加一行:

osip_transaction_set_naptr_record @138

 

打开osipparser2.def文件,在文件最后添加:

osip_realloc @416

osip_strcasestr @417

__osip_uri_escape_userinfo @418

 

修改完,重启VS工程,再次编译,编译成功。

 

以上是关于Exosip分析的主要内容,如果未能解决你的问题,请参考以下文章

exosip 和 pjsip 简介

跪求VS2008下如何编译exosip?

linux exosip编译,openssllibosip2libeXosip2三个库的编译过程

vs2019编译osip和eXosip库及测试示例

Osip2和eXosip协议栈的简析

WebRTC音视频引擎研究--整体架构分析