eX.osip3.0.1在Windows下编译方法及简单UA示例 |
[ 2007-2-3 9:37:00 | By: sipot ]
|
说明:
1.以下文章中的osip版本为3.0.1 2.eXosip版本为3.0.1 3.编译环境为:Windows XP 专业版本+VS 2005 4.示例程序是在 http://blog.csdn.net/bat603/中下载,修改而成(原来是在linux下的示例) 5.如要转载此文章,请说明出处 6.本人也是才接触SIP(呵呵,不到一周),其中一定有很多不对之处,请指正。 第一步,下载: 到 http://www.gnu.org/software/osip/下载最新的osip库并解压 到 http://savannah.gnu.org/projects/exosip/下载最新的eXsoip库并解压 第二步,编译osip3.0.1: 1.用VS2005打开libosip2-3.0.1/platform/vsnet/osip.sln 2.对osip2和osipparser2项目生成Release DLL 3.其生成的LIB/DLL 位于:libosip2-3.0.1/platform/vsnet/Release DLL/下 第三步,编译eXosip3.0.1: 1.用VS2005打开libeXosip2-3.0.1/platform/vsnet/eXosip.sln 2.将libosip2-3.0.1/include/osip2目录COPY到libeXosip2-3.0.1/include/下 3.将libosip2-3.0.1/include/osipparser2目录COPY到libeXosip2-3.0.1/include/下 4.在libeXosip2-3.0.1目录下新建lib目录 5.将“第二步”中生成的libosip2-3.0.1/platform/vsnet/Release DLL/osip2.lib文件COPY到libeXosip2-3.0.1/lib目录下 6.将“第二步”中生成的libosip2-3.0.1/platform/vsnet/Release DLL/osipparser2.lib文件COPY到libeXosip2-3.0.1/lib目录下 7.修改项目属性,新增Dnsapi.lib Iphlpapi.lib Ws2_32.lib osip2.lib osipparser2.lib库输入 8.修改项目属性,新增库目录../../lib 9.修改项目的输出为.DLL,默认为.lib 10.编译Relase DLL 11.其生成的LIB/DLL 位于:libeXosip2-3.0.1/platform/vsnet/Release/下 第四步,编译示例程序: 将以下程序作为UAS.CPP保存
CODE:
// UAS.cpp : 定义控制台应用程序的入口点。
// #i nclude <eXosip2/eXosip.h> #i nclude <stdio.h> #i nclude <stdlib.h> #i nclude <Winsock2.h> /* #i nclude <netinet/in.h> #i nclude <sys/socket.h> #i nclude <sys/types.h>*/ #pragma comment(lib, "osip2.lib") #pragma comment(lib, "osipparser2.lib") #pragma comment(lib, "eXosip.lib") #pragma comment(lib, "Iphlpapi.lib") #pragma comment(lib, "Dnsapi.lib") #pragma comment(lib, "ws2_32.lib") 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:24@10.16.79.24"; char *dest_call = "sip:24@10.16.79.24:5061";//client ip 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) { eXosip_quit (); fprintf (stderr, "eXosip_listen_addr error!/nCouldn't initialize transport layer!/n"); } for(;;) { //侦听是否有消息到来 je = eXosip_event_wait (0,5 |