- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个eXosip的例子
?一个基于exosip的软电话例子
exosip针对UA是对osip进行扩展,oSIP不提供任何快速产生请求消息和响应消息的方法,所有请求消息和响应消息的形成必须调用一组sip message api来手动组装完成,所以作者在osip上基础上开发了exosip,用exosip开发软电话非常方便,仅需几个API就可以完成.exosip中附带一个例子:josua,不过josua相对复杂了点,下面给出一个最简单的例子供大家参考,因为例子实在太简单所以没有给出注释,用到exosip的API的参数请参看exosip源代码,看懂这个例子再研究josua就很简单了.我使用的是osip 2.0.9+exosip 0.77.
#include assert.h#include conio.h#include iostream#include osip2/osip_mt.h#include eXosip/eXosip.h#include eXosip/eXosip_cfg.h
using namespace std;
class jcall;
class jcall {public:?int cid;?int did;??char reason_phrase[50];?int? status_code;??char textinfo[256];?char req_uri[256];?char local_uri[256];?char remote_uri[256];?char subject[256];??char remote_sdp_audio_ip[50];?int? remote_sdp_audio_port;?int? payload;?char payload_name[50];??int state;??jcall() {}??int build(eXosip_event_t *je)?{??jcall *ca = this;????ca-cid = je-cid;??ca-did = je-did;????if (ca-did1 ca-cid1)??{???assert(0);???return -1; /* not enough information for this event?? */??}????osip_strncpy(ca-textinfo,?? je-textinfo, 255);??osip_strncpy(ca-req_uri,??? je-req_uri, 255);??osip_strncpy(ca-local_uri,? je-local_uri, 255);??osip_strncpy(ca-remote_uri, je-remote_uri, 255);??osip_strncpy(ca-subject,??? je-subject, 255);????if (ca-remote_sdp_audio_ip[0]==\0)??{???osip_strncpy(ca-remote_sdp_audio_ip, je-remote_sdp_audio_ip, 49);???ca-remote_sdp_audio_port = je-remote_sdp_audio_port;???ca-payload = je-payload;???osip_strncpy(ca-payload_name, je-payload_name, 49);?????}????if (je-reason_phrase[0]!=\0)??{???osip_strncpy(ca-reason_phrase, je-reason_phrase, 49);???ca-status_code = je-status_code;??}????ca-state = je-type;??return 0;?}?};
jcall call;
void __exit( int r ){?char line[256];?gets( line );?exit( r );}
void josua_printf(char* buf){?printf( \n );}
int josua_event_get(){?int counter =0;?/* use events to print some info */?eXosip_event_t *je;?for (;;)?{??char buf[100];??je = eXosip_event_wait(0,50);??if (je==N
文档评论(0)