一、下载“osip2”和“eXosip2”源码
osip2:http://ftp.gnu.org/gnu/osip/
eXosip2: http://download.savannah.gnu.org/releases/exosip/
备注:从4.0.0版本开始,API接口函数和之前有一些改动,所以我这里为了向下兼容,还是用了3.x.x的最后一个发布版本3.6.0
下载文件为:
“libosip2-3.6.0.tar.gz”
“libeXosip2-3.6.0.tar.gz”
二、在Centos下编译安装
1、解压、编译并安装“osip2” ,指令如下:
tar -zxvf libosip2-3.6.0.tar.gz
cd libosip2-3.6.0
./configure --host=arm-hisiv100nptl-linux --target=arm-hisiv100nptl-linux --disable-static
make
make install
2、解压、编译并安装“eXosip2” ,指令如下:
tar -zxvf libeXosip2-3.6.0.tar.gz
cd libeXosip2-3.6.0
./configure --host=arm-hisiv100nptl-linux --target=arm-hisiv100nptl-linux --disable-static
make
make install
3、安装完后库的路径为:“/usr/local/lib”
三、编写简单的DEMO
1、编译与配置:
(1)代码中必须包含以下头文件
#include <eXosip2/eXosip.h>
#include <osip2/osip_mt.h>
(2)makefile
gcc demo.c -o demo -leXosip2 -I /usr/local/include -L /usr/local/lib -losip2 -losipparser2 -leXosip2
(3)指定库的路径
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
(4)运行并测试程序
./demo
2、demo代码
//*******************UAS**************************************************//
#include <eXosip2/eXosip.h>
#include <osip2/osip_mt.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
int
main (int argc, char *argv[])
{
eXosip_event_t *je = NULL;
osip_message_t *ack = NULL;
osip_message_t *invite = NULL;
osip_message_t *answer = NULL;
sdp_message_t *remote_sdp = NULL;
int call_id, dialog_id;
int i,j;
int id;
char *sour_call = "sip:133@192.168.0.133";
char *dest_call = "sip:140@192.168.0.140:5060";
char command;
char tmp[4096];
char localip[128];
int pos = 0;
//初始化sip
i = eXosip_init ();
if (i != 0)
{
printf ("Can't initialize eXosip!/n");
return -1;
}
else
{
printf ("eXosip_init successfully!/n");
}
i = eXosip_listen_addr (IPPROTO_UDP, NULL, 5060, AF_INET, 0);
if (i != 0)
{
eX