北邮软院实训-第11组解读JAIN-SIP_第1页
北邮软院实训-第11组解读JAIN-SIP_第2页
北邮软院实训-第11组解读JAIN-SIP_第3页
北邮软院实训-第11组解读JAIN-SIP_第4页
北邮软院实训-第11组解读JAIN-SIP_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAIN-SIP系统解读体会小组成员:田文军、郑岳、秦红艳、付清程第十一小组解读流程 理解SIP协议以及SIP会话的建立过程 理解JAIN-SIP是如何运用对象、消息以及事件这些面向对象的概念来描述SIP的 分析和运行JAIN-SIP的部分代码3什么是什么是 SIP SIP 协议协议? ? SIP 是发起是发起, 管理和终止一个管理和终止一个 Internet 会话的核心协议会话的核心协议 这些会话可以是文本、语音、视频形式的,或者是它这些会话可以是文本、语音、视频形式的,或者是它们的组合形式们的组合形式 SIP 支持在会话的中间改变通信媒体的类型支持在会话的中间改变通信媒体的类型 SIP 会

2、话将涉及到一个或多个参与者,可以使用点到点会话将涉及到一个或多个参与者,可以使用点到点(unicast)或广播()或广播(multicast)的形式进行通信)的形式进行通信. SIP 的工作是独立于它所使用的传输层协议的的工作是独立于它所使用的传输层协议的SIP的特点1、SIP会话中的各参与方可以通过多播或单播的方式进行通信。2、SIP通过代理和重定向请求到用户当前位置来支持用户的移动性。3、由于SIP没有捆绑于任何特定的会议控制协议, 因而协议具有普遍性, 可以用于开发Internet多媒体会议、Internet电话呼叫、多媒体分发、网络游戏以及虚拟现实等方面的应用。SIP的两种操作模式之一

3、200 OKBYE200 OKINVITE sip:200 OKACKINVITE sip:SIPUser AgentClientSIPProxyServerSIPUser AgentServerMedia Stream代理服务器模式SIP的两种操作模式之二9重定向服务器(重定向服务器(Redirect Server)举例)举例302 Moved sip:ACKMedia StreamINVITE sip:SIPUser AgentClientSIPRedirectServer180 RingingACKINVITE sip:SIPUser AgentServerREGISTER 200 OK

4、200 OKJAIN-SIP简介 JAIN-SIP是用JAVA语言对SIP协议的完整定义,为应用程序提供了一套访问SIP协议的标准接口,任何基于SIP的应用都可将JAIN SIP 作为Java标准接口,用到任何SIP应用实例中。 JAIN SIP利用Java的面向对象特性,用对象、消息以及事件来描述SIP协议。JAIN SIPJAIN SIP信息传送体系结构信息传送体系结构JAIN SIP对象的初始化过程createListener()getInstance()creatStack()creatProvider()Event RegistrationJAIN SIP对象的初始化过程1) JAI

5、N SIP应用程序调用createListener方法创建出一个全局唯一SipListener对象;2) SipListener通过getInstance方法创建SipFactory对象,并通过其创建SipStack对象;3) SipStack对象创建SipProvider,并将其私有的SipStack交由SipProvider管理;4) 一旦一个SipProvider成功建立,SipListener就对其进行注册,建立起消息/事件机制,,从而完成初始化关键代码分析JAIN SIP程序的初始化程序的运行主体放在init类中:public void init( ) / /首先UAC和UAS分别生

6、成sip堆栈sipStack=sipFactory.createSipStack(properties) ;/ /每个sipStack都分别通过sipFactory类的相应方法创建报头、地址和报文的工厂headerFactory=sipFactory.createHeaderFactory( ) ;addressFactory=sipFactory.createAddressFactory( );messageFactory=sipFactory.createMessageFactory( ) ;关键代码分析/ /监听点的生成是通过sipStack类createL isteningPoint(

7、 )方法来实现udpListeningPoint=sipStack.createListeningPoint ( 127.0.0.1, 50* 0, udp ) ;关键代码分析/ /生成监听点后创建SIP 提供者, 并通sipProvider类的addSipListener( )方法对其进行注册sipProvider=sipStack.createSipProvider(udpListeningPoint) ;Shoot*listener=this;sipProvider.addSipListener(listener); 客户端关键代码分析客户端发送INVITE请求/ /UAC发送INVIT

8、E请求发起会话。Request request= messageFactory.createRequest(requestURI,RequestINVITE,callIdHeader,cSeqHeader,fromHeader,toHeader, viaHeaders, maxForwards);客户端关键代码分析 而ACK请求、BYE请求和CANCEL请求是在同一个类processResponse 中实现的, UAC通过response类中的getStatusCode( )方法判断收到的响应类型,并通过cseq类中的getMtethod( ).equals( )方法来判断前次请求消息类型:p

9、ublicvoidprocessResponse( ResponseEventresponseReceivedEvent) if(response.getStatusCode( )=Response.OK)if (cseq. geMtethod( ). equals(Request.INVITE);客户端关键代码分析 /当收到的响应类型为200/OK响应, 前次请求消息类型为INVITE请求时, UAC通过dialog 类中的sendAck( )方法发送ACK 请求ackRequest=dialog.createRequest(Request. ACK);dialog. sendAck(ack

10、Request);客户端关键代码分析/创建会话连接dialog.sendRequest(sipProvider.getNewClientTransaction(dialog.createRequest(REFER )else if(cseq.geMtethod( ).equals(Request.CANCEL) ) if(dialog.getState( )=DialogState.CONFIRMED);服务器端关键代码分析 requestEvent类为UAS提供了一个getRequest( )方法用来接收请求, 通过getMethod( ). equals( )方法来判断收到的请求消息类型,

11、 从而做出相应的响应.Public void processRequest (RequestEvent requestEvent) Request request=requestEvent .getRequest( );服务器端关键代码分析ServerTransactionif( request. getMethod ( ). equals( Request. INVITE ) ) 如果UAS收到INV ITE 请求, 则通过messageFactory类中的createResponse ( ) 方法创建100 /TRYING响应服务器端关键代码分析如果UAS收到BYE 请求, 则通过createResponse( )方法创建200 /OK响应, 并通过messageFactor( )方法发送该响应, 通话结束:public void processBye( ) Response response=messageFactory.createResponse( 200, re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论