SIP协议初探

osip初探
今天开始研究SIP协议,其全称为Session Initiation Protocol,是VOIP中的一个必需的协议。
首先找到了rfc文档,rfc3261,200多页的英文文档,读起来太慢眼睛也受不了。后来找到了据说是华为内部的SIP培训资料,还是中文看得爽,对SIP有了大致了解。

收集的资料已上传至:http://download.csdn.net/detail/gavinr/3802698,包括rfc及一些中文资料


然后找找SIP的开源实现,这个倒是有很多选择,最后选择osip来研究。osip是GNU的一个项目,用ANSI C编写,支持linux、winodws、wince。
osip的GNU主页:http://www.gnu.org/software/osip/
下载到的最新版本为libosip2-3.6.0,解压后在libosip2-3.6.0\platform\vsnet目录下有VS工程文件,VS2008打开,两个工程均顺利编译通过。

osip是一个比较底层的SIP实现,还有一个osip的扩展库exosip,使用exosip可以很方便地快速创建一个完整的SIP程序。
下载地址:http://savannah.nongnu.org/projects/exosip/
编译过程遇到一些问题,记录如下:
1.在libeXosip2-3.6.0\platform\vsnet中,有VS的工程文件(也还提供了wince工程),可以直接打开,可以发现这个一个静态库工程。

2.修改osip所在的路径,build,发现大量找不到openssl/opensslv.h的错误,找到引用处,
#ifdef HAVE_OPENSSL_SSL_H
/* to access version number of ssl from any file */
#include <openssl/opensslv.h>
#endif
心想ssl不用应该也可以吧,于是直接到工程属性中,将HAVE_OPENSSL_SSL_H宏定义去掉

3.继续编译,发现一个奇怪的错误
1>..\..\src\eXtl_udp.c(181) : error C2065: 'retval' : undeclared identifier

仔细看了看,确实没有定义retval变量,也没在其它地方引用,怎么会有一个如此低级的错误呢?先不管它,直接直接注释掉,编译顺利通过


这里有一篇讲OSIP学习的文章:http://blog.csdn.net/yang_rong_yong/article/details/3551126


你可能感兴趣的:(SIP协议初探)