SIP实验报告
SIP协议安全性测试研究与实现的开题报告

SIP协议安全性测试研究与实现的开题报告一、选题背景及意义随着互联网的不断发展和普及,网络通信日益成为我们日常生活和工作中必不可少的一部分。
而VoIP技术的出现,则使得传统的电话通信方式发生了巨大变革,不仅节省了通信费用,而且还拥有更多的功能和应用。
SIP(Session Initiation Protocol)作为现代VoIP网络中的一种核心信令协议,其安全性问题已经成为当前亟待解决的课题。
SIP在通信过程中存在一些安全问题:1. 身份验证问题2. 数据加密问题3. 拒绝服务攻击问题等。
因此,对SIP协议的安全性进行研究,针对其中存在的安全问题进行分析和解决是十分必要的。
二、研究目标和内容目标:1. 研究SIP协议中存在的安全问题及其原因2. 探索SIP协议中存在的安全机制3. 分析SIP协议安全性测试的现状和瓶颈4. 设计并实现一套SIP协议安全测试工具内容:1. SIP协议的介绍和体系结构2. SIP协议中存在的安全问题及其原因的研究3. SIP协议的安全机制的研究4. SIP协议安全性测试的现状和瓶颈的分析5. 基于Python语言实现一套SIP协议安全测试工具三、研究方法和技术路线方法:1. 文献调研法2. 实验测试法3. 系统设计法技术路线:1. SIP协议安全性问题的研究2. SIP协议的安全机制研究3. SIP协议安全性测试工具的设计与实现四、预期成果1. 对SIP协议中的安全问题及其机制进行系统分析2. 设计并实现一套SIP协议安全测试工具3. 对工具的测试结果进行分析,为保障SIP协议的安全性提供一定的参考和支持五、研究难点和解决方案难点:1. SIP协议中存在的安全问题及其原因分析2. SIP协议安全性测试工具的设计与实现解决方案:1. 文献调研法和实验测试法相结合,全面深入地理解SIP协议中存在的安全问题及其原因2. 采用Python语言,在学习SIP协议的基础上,借助Python库实现SIP协议安全性测试工具的设计与实现六、进度安排第一阶段 (一个月):1. SIP协议的相关文献调研,熟悉SIP协议体系结构及其相关技术2. 分析SIP协议中存在的安全问题和机制,准备相关文献和数据第二阶段(两个月):1. 设计和实现SIP协议安全性测试的工具2. 对工具进行性能测试和安全性测试第三阶段(一个月):1. 对测试结果进行分析和总结2. 编写论文,准备答辩材料七、阶段性成果第一阶段:1. SIP协议体系结构和相关技术的文献综述2. SIP协议中存在的安全问题和机制的分析报告,共计5000字第二阶段:1. 基于Python的SIP协议安全性测试工具的设计和实现,代码及相关操作文档2. 工具性能测试和安全性测试报告第三阶段:1. 学位论文初稿2. 答辩材料注:以上仅为开题报告,具体研究方案和成果可能会有所变化。
通信网技术基础VOIP呼叫过程及SIP消息分析实验报告

通信⽹技术基础VOIP呼叫过程及SIP消息分析实验报告南京邮电⼤学实验报告实验名称VOIP呼叫过程及SIP消息分析课程名称____通信⽹技术基础______ 班级学号_____________姓名__________________开课时间 2011 /2012 学年,第⼆学期VOIP呼叫过程及SIP消息分析B09010501 王雅慧⼀、实验⽬的1、学习VOIP原理,了解PC-PC⽅式VOIP⽹络的构成、呼叫模式以及信令的过程。
2、学习使⽤Ethereal这种协议分析软件,⽤它来考察实际系统中传送的分组。
⼆、实验设备硬件部分:校园⽹、PC(带⽿麦)软件部分:SIP UA : 可从⽹上任选⼀款下载并安装,也可以选择⽼师提供的UA软件WinPcap 3.1(它是WIN32 平台上⽹络分析和捕获数据包的链接库,其功能相当于Linux/BSD/UNIX 平台下的Libpcap 库⽂件)Ethereal:0.10.14三、实验步骤下载并安装SIP UA,并做相应设置(域名、IP、端⼝等等),并记录进实验报告;也可以选择Windows Messenger或SKYPE,进⾏⽤户注册,并记录过程;通话,呼叫另⼀个⽤户的通话,记录通话过程中语⾳质量,包括延时和回声;安装WinPcap 3.1;安装并启动Ethereal,开始抓包(设置);重新呼叫另⼀个⽤户,开始通话;获取并分析SIP信令流和语⾳媒体流,记录在报告中,具体要求:(1) 分析并记录呼叫建⽴、呼叫忙、呼叫结束的信令过程。
(2) 分析媒体流(语⾳包):从捕获的数据单元中选⼀个RTP包进⾏分析。
四、实验过程记录和分析1、我选择的客户端是BOL SIPPhone,登录界⾯如图所⽰:2、通话的模式是直接路由,通话双⽅处于同⼀⼦⽹内部。
通话成功,语⾳略有延时和回声。
3、启动抓包⼯具,记录捕获的包的统计数据(见下图),并作简要说明。
这次⼀共抓了2077个包,其中TCP包178个,占8.6%UDP包178个,占总数的89.7%;ARP包29个,占1.4%。
(SIP呼叫实验)

1、实验要求
通过SIP软终端完成点到点方式的SIP语音呼叫和SIP短消息业务,使用Wireshark等抓包工具抓取SIP消息,对消息进行分析。
2、实验目的
通过本实验掌握SIP呼叫流程。
二、实验环境(实验设备)
1微型计算机一台
2软件SIP软终端
3耳机一副
4麦克风一个
三、实验原理及内容
第一部分:SIP语音呼叫和SIP消息分析。
第二部分:SIP短消息和SIP消息分析。
1、
2、过滤结果:
3、抓包分析:
4、绘制消息流程图:
5、保存SIP消息流程图,用文本打开:
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
通过本次SIP呼叫实验,我对SIPPhone有了一定的了解,初步懂得了使用Wireshark抓包和使用的流程。
还懂得了用文本查看抓包的结果。
我今后会进一步对这两个软件加深了了解。
五、指导教师评语
成绩:批阅人:日期:。
VOIP呼叫过程及SIP消息分析报告

南京邮电大学实验报告实验名称VOIP呼叫过程及SIP消息分析 ________________________ _________________________ _________________________ _________________________课程名称通信网技术基础班级学号____________姓名开课时间 2011/2012 学年,第二学期一、 实验原理1.VOIP 网络构成2.用于网络电话呼叫的协议结构 SIP Voice MeadiaG.711/G.723.1 RTP/RTCP UDPIPEtherNet二、实验目的1、学习VOIP 原理,了解PC-PC 方式VOIP 网络的构成、呼SIP SERVERSIP SERVERSIP SERVER叫模式以及信令的过程。
2、学习使用Ethereal这种协议分析软件,用它来考察实际系统中传送的分组。
三、实验设备1.硬件部分:校园网、PC(带耳麦)2.软件部分:⏹SIP UA : 可从网上任选一款下载并安装,也可以选择老师提供的UA软件⏹WinPcap 3.1(它是WIN32 平台上网络分析和捕获数据包的链接库,其功能相当于Linux/BSD/UNIX平台下的Libpcap 库文件)⏹Ethereal:0.10.14四、实验步骤1.下载并安装SIP UA,并做相应设置(域名、IP、端口等等),并记录进实验报告;也可以选择Windows Messenger或SKYPE,进行用户注册,并记录过程;2.通话,呼叫另一个用户的通话,记录通话过程中语音质量,包括延时和回声;3.安装WinPcap 3.1;4.安装并启动Ethereal,开始抓包(设置);5.重新呼叫另一个用户,开始通话;6.获取并分析SIP信令流和语音媒体流,记录在报告中,具体要求:(1)分析并记录呼叫建立、呼叫忙、呼叫结束的信令过程。
分析媒体流(语音包):从捕获的数据单元中选一个RTP包进行分析。
实验报告(IS-IS实验)参考模板

一. 实验名称:IS-IS实验二. 实验设备:(在模拟平台)1.4台路由器2.若干线缆三. 网络拓朴:四. 预期要达到的实验结果:1.IS-IS多区域实现全网互通。
2.了解IS-IS多区域产生区域外次优路由的原因。
3.掌握IS-IS路由渗透的配置。
五. 配置思路步骤:(工程配置思想)1.根据拓扑图,互联链路、业务网段(用回环模拟)配置及测试。
2.根据区域及路由器类型配置IS-ISa)各路由器NET地址需配置正确。
b)将相应的接口加入到ISIS进程中。
c)根据情况修改RT2、RT3各接口级别。
d)配置完成后查看RT5和RT1的IP路由表,并测试RT5业务网段和RT1业务网段间的连通性3.修改RT3、RT5间链路开销为5(接口下:isis cost 5),修改RT1、RT3间链路开销为30,重新查看RT5和RT1的IP路由表,分析路由变化的原因,分析RT5业务网段去往RT1业务网段的转发路径是什么,并使用Tracert命令查看。
4. 在RT2、RT3上做路由渗透,然后查看RT5 IP路由表的变化,分析RT5业务网段去往RT1业务网段的转发路径是什么,并使用Tracert命令查看。
六. 实验调试过程:1.根据拓扑图,互联链路、业务网段(用回环模拟)配置及测试。
1)完成在RT5上的回环地址以及接口IP地址的配置。
[RT5]interface LoopBack 0[RT5-LoopBack0]ip address 172.16.0.1 32[RT5-LoopBack0]quit[RT5]interface LoopBack 1[RT5-LoopBack1]ip address 172.16.1.1 32[RT5-LoopBack1]quit[RT5]interface Ethernet 0/1/3[RT5-Ethernet0/1/3]ip address 10.1.1.13 30[RT5-Ethernet0/1/3]%Oct 14 18:13:07:792 2012 RT5 IFNET/4/UPDOWN:Line protocol on the interface Ethernet0/1/3 is UP[RT5-Ethernet0/1/3]quit[RT5]interface Ethernet 0/1/0[RT5-Ethernet0/1/0]ip address 10.1.1.9 30[RT5-Ethernet0/1/0]%Oct 14 18:13:34:16 2012 RT5 IFNET/4/UPDOWN:Line protocol on the interface Ethernet0/1/0 is UP[RT5-Ethernet0/1/0]quit2)完成RT3上接口IP配置并测试接口E0/1/2与RT5接口E0/1/3的连通性。
SIP实验报告

南京邮电大学综合实验(软交换)SIP注册实验姓名:学号:班级:日期:2013年10月13日内容与要求:设计流程①熟悉环境◊②用自己用户登入,SIP配置实验)◊③学习协议流程(至少包括注册、正常呼叫、对端忙、重定向)◊④学习消息参数(请求、相应消息所包含的头域,各个头中携带的参数)◊⑥选定程序设计题目设计实现方案◊⑦开源协议栈学习+ 题目实现◊⑧自己编程◊⑨测试◊综合实验程序设计(开源代码基础上)一、完善UA功能(使用SS1B测试)1、完整正常主叫信令流程2、完善UA配置、使用界面二、完成服务器部分功能(使用multiphone测试)3、注册服务器4、无状态代理服务器三、自拟题目综合实验(软交换)注意事项:1、关于资料实验室客户端有协议原文、技术手册、学习资料、开源代码、使用手册和例子。
其它资料需自己准备。
2、设计方案每组一个设计方案,建议题目中任选一个或自己拟定都可以,组中同学要有各自侧重点和分工。
3、编程语言编译器不限,VC 、BCB 、DELPHI 、.NET. 语言 c 、c++、delphi开源代码,实验室提供OSIP (C 语言编写),也可以自己下载其它开源代码SIP 架构:程序测试:下载VC++6.0更新SDK 获得这两个API 文件。
再编译osip2,eXosip2和 osipparser2得到加入到VC 和WINDOWS 的相应文件夹中,编译过程中需要以下2个库文件 界面如下:抓包显示注册,注销,呼叫以及挂断的消息。
文本的SIP 消息:思考题:软交换设备 设备名称 设备型号 数量 备注软交换控制设备 ZXSS10 SS1b 1 硬件5万用户容量,软件200线用户license, 480线中继license 中继信令合一网关 ZXMSG7200 1 16E1,2 条64K 信令 link UP10业务平台 UP10 1 Web 客户端和业务服务器合一 媒体服务器 Mes 1综合网管系统ZXNMS 011网管客户端和网管服务器合一,包含40个网管客户端License界 面 /配置数据UDP 通信模块协议消息解析业务流程控制SIP 终端(代理)2、什么叫状态机,给出SIP协议中一个状态机的例子,并说明。
sip协议原理分析及总结

sip协议原理分析及总结SIP协议学习总结1、SIP协议定义SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于⽂本编码的IP电话/多媒体会议协议。
⽤于建⽴、修改并终⽌多媒体会话。
SIP 协议可⽤于发起会话,也可以⽤于邀请成员加⼊已经⽤其它⽅式建⽴的会话。
多媒体会话可以是点到点的话⾳通信或视频通信,也可以是多点参与的话⾳或视频会议等。
SIP协议透明地⽀持名字映射和重定向服务,便于实现ISDN,智能⽹以及个⼈移动业务。
SIP协议可以⽤多点控制单元(MCU)或全互连的⽅式代替组播发起多⽅呼叫。
与PSTN 相连的IP电话⽹关也可以⽤SIP协议来建⽴普通电话⽤户之间的呼叫。
SIP协议在IETF多媒体数据及控制体系协议栈结构的位置H.323SIP RTSP RSVP RTCPH.263 etc.RTP TCP UDPIPPPP Sonet AAL3/4AAL5ATM EthernetPPPV.34SIP协议⽀持多媒体通信的五个⽅⾯:◆⽤户定位:确定⽤于通信的终端系统;◆⽤户能⼒:确定通信媒体和媒体的使⽤参数;◆⽤户有效性:确定被叫加⼊通信的意愿;◆会话建⽴:建⽴主叫和被叫的呼叫参数;◆会话管理:包括呼叫转移和呼叫终⽌;SIP协议的结构SIP是⼀个分层的协议,也就是说SIP协议由⼀组相当⽆关的处理层次组成,这些层次之间只有松散的关系。
SIP最底层的是它的语法和编码层。
编码⽅式是采⽤扩展的Backus-Naur Form grammar (BNF范式)。
第⼆层是传输层。
它定义了⼀个客户端发送请求和接收应答的⽅式,以及⼀个服务器接收请求和发送应答的⽅式。
所有的SIP要素都包含⼀个通讯层。
第三层是事务层。
事务是SIP的基本组成部分。
⼀个事务是UAC向UAS发送的⼀个请求以及UAS向UAC发送的⼀系列应答。
事务层处理应⽤服务层的重发,匹配请求的应答,以及应⽤服务层的超时。
SiP仿真report Part1

SiP仿真验证工具介绍我们即将开展许多新课题的硬件设计工作,其设计复杂度、工作频率、量化精度指标和电磁兼容性能要求较以往任务又有很大的提高,如何在很有限的时间内更有效的开展SiP 设计以达到更高的预期指标将是我们面临的一大难题,准确有效的仿真设计必不可缺!为此,我们系统评估了ANSYS公司的SiP仿真方案。
ANSYS公司是业界领先的电磁及热仿真解决方案提供商,公司所开发的Alinks,SIwave, HFSS, Designer, Q3D,Icepak等工具可以帮助工程师从设计初期开始就考虑信号完整性,电源完整性及热性能,得到有效的设计规则,并在设计的过程中,实时的仿真及验证设计的有效性,在生产前,可以通过软件提取各种通用模型,并在ANSYS公司的仿真平台上,进行系统级的电热耦合仿真,及时发现及规避各种问题。
下图是ANSYS公司SiP仿真流程。
1. 在设计前期,确定工艺可行性,是SiP成功的基础,这一点与IC设计类似。
ANSYS的三维模型参数提取工具Q3D和电路系统仿真工具Designer主要在设计前期,对SiP设计工艺进行评估,评估SiP互联寄生参数对信号和电源的影响。
SiP设计工艺包括单层或多层键合丝(Wire Bunding)、倒装片(Flip Chip)、叠片(PoP)等工艺,带来的互联寄生参数会对高速信号和敏感电源网络引起噪声,因此需要在设计前期进行仿真评估,利用Q3D模拟各种工艺条件下互联寄生参数,必要时导出模型到Designer中结合IC芯片模型仿真信号和电源噪声,在设计集成度与性能之间取得平衡。
2. 确定工艺和约束后,利用Cadence公司的SPB SiP设计软件,进行布局布线。
布局布线完成后,利用ANSYS专用的接口Alinks将SPB SiP设计数据完整的导入到ANSYS SIwave中进行后仿真。
在SIwave中,可以对关注的电源网络进行谐振分析、阻抗分析和直流压降分析,对关键网络和总线进行信号完整性分析——包括S参数提取和TDR阻抗分析,并将提取的模型导入到Designer当中,结合芯片的Spice和IBIS模型进行信号的过冲、串扰、同步开关噪声、时序和眼图分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京邮电大学综合实验(软交换)SIP注册实验姓名:学号:班级:日期:2013年10月13日内容与要求:设计流程①熟悉环境◊②用自己用户登入,SIP配置实验)◊③学习协议流程(至少包括注册、正常呼叫、对端忙、重定向)◊④学习消息参数(请求、相应消息所包含的头域,各个头中携带的参数)◊⑥选定程序设计题目设计实现方案◊⑦开源协议栈学习+ 题目实现◊⑧自己编程◊⑨测试◊综合实验程序设计(开源代码基础上)一、完善UA功能(使用SS1B测试)1、完整正常主叫信令流程2、完善UA配置、使用界面二、完成服务器部分功能(使用multiphone测试)3、注册服务器4、无状态代理服务器三、自拟题目综合实验(软交换)注意事项:1、关于资料实验室客户端有协议原文、技术手册、学习资料、开源代码、使用手册和例子。
其它资料需自己准备。
2、设计方案每组一个设计方案,建议题目中任选一个或自己拟定都可以,组中同学要有各自侧重点和分工。
3、编程语言编译器不限,VC 、BCB 、DELPHI 、.NET. 语言 c 、c++、delphi开源代码,实验室提供OSIP (C 语言编写),也可以自己下载其它开源代码SIP 架构:程序测试:下载VC++6.0更新SDK 获得这两个API 文件。
再编译osip2,eXosip2和 osipparser2得到加入到VC 和WINDOWS 的相应文件夹中,编译过程中需要以下2个库文件 界面如下:抓包显示注册,注销,呼叫以及挂断的消息。
文本的SIP 消息:思考题:软交换设备 设备名称 设备型号 数量 备注软交换控制设备 ZXSS10 SS1b 1 硬件5万用户容量,软件200线用户license, 480线中继license 中继信令合一网关 ZXMSG7200 1 16E1,2 条64K 信令 link UP10业务平台 UP10 1 Web 客户端和业务服务器合一 媒体服务器 Mes 1综合网管系统ZXNMS 011网管客户端和网管服务器合一,包含40个网管客户端License界 面 /配置数据UDP 通信模块协议消息解析业务流程控制SIP 终端(代理)2、什么叫状态机,给出SIP协议中一个状态机的例子,并说明。
在开始一个线程的时候,就会开始一个状态机,当一个事件发生的时候,就会转到相应的状态上去。
如sip注册:(UA)空闲状态-----(发送注册信息)-→待机状态等待响应-----(收到成功响应)--→已注册状态| |(未收到响应) --(收到注册失败响应)-→空闲状态|空闲状态3、设计一个SIP终端或代理服务器,给出主要软件模块构成。
UAC UAS4、分析SIP相关开源代码,说明SIP消息处理的方法。
以纯文本的方式在UA与server之间按照固定顺序发送消息,根据消息进行相应处理。
附录#include <eXosip2/eXosip.h>#include <stdio.h>#include <stdlib.h>#include <windows.h>#include <sys/types.h>/*void cb_rcv4xx(sipevent_t * se,transaction_t * tr);void cb_rcv4xx(sipevent_t * se,transaction_t * tr){printf("rcv 4xx msg do nothing");}*/intmain (int argc, char *argv[]){eXosip_event_t *je;osip_message_t *reg = NULL;osip_message_t *invite = NULL;osip_message_t *ack = NULL;osip_message_t *info = NULL;osip_message_t *message = NULL;FILE *writefile;int call_id, dialog_id;int i,flag;int flag1 = 1;int id;char *identity = "sip:@";char *registerer = "sip:";char *source_call = "sip:@";char *dest_call = "sip:@";char *con = "sip:";char command;char tmp[4096];char localip[128] = "";printf("r 向服务器注册\n\n");printf("c 取消注册\n\n");printf("i 发起呼叫请求\n\n");printf("h 挂断\n\n");printf("q 退出程序\n\n");printf("s 执行方法INFO\n\n");printf("m 执行方法MESSAGE\n\n");//初始化i = eXosip_init ();if (i != 0){printf (" Couldn't initialize eXosip!\n");return -1;}else{printf ("eXosip_init successfully!\n");}writefile = fopen("log.txt","w");osip_trace_initialize (8, writefile);OSIP_TRACE (osip_trace(__FILE__, __LINE__, OSIP_ERROR, NULL,"eXosip: already listening somewhere\n"));i = eXosip_listen_addr (IPPROTO_UDP, NULL, 5060, AF_INET, 0); // osip_setcb_rcv4xx(cf,&cb_rcv4xx);if (i != 0){eXosip_quit ();fprintf (stderr, "Couldn't initialize transport layer!\n");return -1;}flag = 1;while (flag){printf ("please input the comand:\n");fflush(stdin);scanf ("%c", &command);//getchar ();switch (command){case 'h':printf ("Holded !\n");eXosip_lock ();eXosip_call_terminate (call_id, dialog_id);eXosip_unlock ();break;case 'c':eXosip_lock ();i = eXosip_register_build_register (id, 0, ®);if (i < 0){eXosip_unlock ();printf("注销失败!\n");}else{eXosip_register_send_register (id, reg);printf("注销成功!\n");eXosip_unlock ();}break;case 's'://传输INFO方法eXosip_call_build_info (dialog_id, &info);snprintf (tmp , 4096,"hello,rainfish");osip_message_set_body (info, tmp, strlen(tmp));//格式可以任意设定,text/plain代表文本信息osip_message_set_content_type (info, "text/plain");eXosip_call_send_request (dialog_id, info);break;case 'm'://传输MESSAGE方法,也就是即时消息,和INFO方法相比,我认为主要区别,是MESSAGE不用建立连接,直接传输信息,而INFO必须//在建立INVITE的基础上传输。
printf ("the mothed :MESSAGE\n");eXosip_message_build_request (&message, "MESSAGE", dest_call, source_call, NULL); snprintf (tmp, 4096,"hello,rainfish");osip_message_set_body (message, tmp, strlen(tmp));//假设格式是xmlosip_message_set_content_type (message, "text/xml");eXosip_message_send_request (message);break;case 'q':eXosip_quit ();printf ("Exit the SIPphone!\n");flag = 0;break;case 'r':id=eXosip_register_build_initial_register(source_call, registerer, con,1000,®); eXosip_lock ();eXosip_clear_authentication_info(); //去除上次加入的错误认证信息//添加认证信息if (eXosip_add_authentication_info("", "", "1340", "md5", NULL)){printf("--Add_authentication_info failed\n");eXosip_unlock();return -4;}i = eXosip_register_send_register (id, reg) ;eXosip_unlock ();printf ("send reg commpleted!\n");flag1 = 1;while (flag1){// je = eXosip_event_wait (0, 200);je = eXosip_event_wait (0, 500);//协议栈带有此语句,具体作用未知eXosip_lock ();eXosip_default_action (je);eXosip_automatic_refresh ();eXosip_unlock ();if (je == NULL){printf ("No response or the time is over!\n");break;}switch (je->type){case EXOSIP_REGISTRATION_FAILURE:printf ("a 4xx rcved !\n");id=eXosip_register_build_register (je->rid, 2000, ®);i = eXosip_register_send_register (id, reg);printf("send a new regesiter\r\n");break;case EXOSIP_REGISTRATION_SUCCESS:printf("reg success!\r\n");break;default:printf("unexpect event %d",je->type);break;}eXosip_event_free (je);break;}break;case 'i':/* INVITE */i = eXosip_call_build_initial_invite (&invite, dest_call, source_call, NULL, "This si a call for a conversation");if (i != 0){printf ("Intial INVITE failed!\n");break;}//符合SDP格式,其中属性a是自定义格式,也就是说可以存放自己的信息,但是只能是两列,比如帐户信息//但是经测试,格式:v o t必不可少,原因未知,估计是协议栈在传输时需要检查的snprintf (tmp, 4096,"v=0\r\n""o=anonymous 0 0 IN IP4 ""t=1 10\r\n""a=username:rainfish\r\n""a=password:123\r\n");osip_message_set_body (invite, tmp, strlen(tmp));osip_message_set_content_type (invite, "application/sdp");eXosip_lock ();i = eXosip_call_send_initial_invite (invite);eXosip_unlock ();flag1 = 1;while (flag1){je = eXosip_event_wait (0, 200);if (je == NULL){printf ("No response or the time is over!\n");break;}switch (je->type){case EXOSIP_CALL_INVITE:printf ("a new invite reveived!\n");break;case EXOSIP_CALL_PROCEEDING:printf ("proceeding!\n");break;case EXOSIP_CALL_RINGING:printf ("ringing!\n");// call_id = je->cid;// dialog_id = je->did;printf ("call_id is %d, dialog_id is %d \n", je->cid, je->did);break;case EXOSIP_CALL_ANSWERED:printf ("ok! connected!\n");call_id = je->cid;dialog_id = je->did;printf ("call_id is %d, dialog_id is %d \n", je->cid, je->did);eXosip_call_build_ack (je->did, &ack);eXosip_call_send_ack (je->did, ack);flag1 = 0;break;case EXOSIP_CALL_CLOSED:printf ("the other sid closed!\n");break;case EXOSIP_CALL_ACK:printf ("ACK received!\n");break;default:printf ("other response!\n");break;}eXosip_event_free (je);}break;}}return (0); }。