北邮软院实训组解读JAINSIPPT课件.pptx_第1页
北邮软院实训组解读JAINSIPPT课件.pptx_第2页
北邮软院实训组解读JAINSIPPT课件.pptx_第3页
北邮软院实训组解读JAINSIPPT课件.pptx_第4页
北邮软院实训组解读JAINSIPPT课件.pptx_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

JAIN SIP系统解读体会 小组成员 田文军 郑岳 秦红艳 付清程 第十一小组 解读流程 理解SIP协议以及SIP会话的建立过程理解JAIN SIP是如何运用对象 消息以及事件这些面向对象的概念来描述SIP的分析和运行JAIN SIP的部分代码 3 什么是SIP协议 SIP是发起 管理和终止一个Internet会话的核心协议这些会话可以是文本 语音 视频形式的 或者是它们的组合形式SIP支持在会话的中间改变通信媒体的类型SIP会话将涉及到一个或多个参与者 可以使用点到点 unicast 或广播 multicast 的形式进行通信 SIP的工作是独立于它所使用的传输层协议的 SIP的特点 1 SIP会话中的各参与方可以通过多播或单播的方式进行通信 2 SIP通过代理和重定向请求到用户当前位置来支持用户的移动性 3 由于SIP没有捆绑于任何特定的会议控制协议 因而协议具有普遍性 可以用于开发Internet多媒体会议 Internet电话呼叫 多媒体分发 网络游戏以及虚拟现实等方面的应用 SIP的两种操作模式之一 代理服务器模式 SIP的两种操作模式之二 9 重定向服务器 RedirectServer 举例 JAIN SIP简介 JAIN SIP是用JAVA语言对SIP协议的完整定义 为应用程序提供了一套访问SIP协议的标准接口 任何基于SIP的应用都可将JAINSIP作为Java标准接口 用到任何SIP应用实例中 JAINSIP利用Java的面向对象特性 用对象 消息以及事件来描述SIP协议 JAINSIP信息传送体系结构 JAINSIP对象的初始化过程 createListener getInstance creatStack creatProvider EventRegistration JAINSIP对象的初始化过程 1 JAINSIP应用程序调用createListener方法创建出一个全局唯一SipListener对象 2 SipListener通过getInstance方法创建SipFactory对象 并通过其创建SipStack对象 3 SipStack对象创建SipProvider 并将其私有的SipStack交由SipProvider管理 4 一旦一个SipProvider成功建立 SipListener就对其进行注册 建立起消息 事件机制 从而完成初始化 关键代码分析 JAINSIP程序的初始化程序的运行主体放在init类中 publicvoidinit 首先UAC和UAS分别生成sip堆栈sipStack sipFactory createSipStack properties 每个sipStack都分别通过sipFactory类的相应方法创建报头 地址和报文的工厂headerFactory sipFactory createHeaderFactory addressFactory sipFactory createAddressFactory messageFactory sipFactory createMessageFactory 关键代码分析 监听点的生成是通过sipStack类createListeningPoint 方法来实现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发送INVITE请求发起会话 Requestrequest messageFactory createRequest requestURI RequestINVITE callIdHeader cSeqHeader fromHeader toHeader viaHeaders maxForwards 客户端关键代码分析 而ACK请求 BYE请求和CANCEL请求是在同一个类processResponse中实现的 UAC通过response类中的getStatusCode 方法判断收到的响应类型 并通过cseq类中的getMtethod equals 方法来判断前次请求消息类型 publicvoidprocessResponse 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 ackRequest 客户端关键代码分析 创建会话连接dialog sendRequest sipProvider getNewClientTransaction dialog createRequest REFER elseif cseq geMtethod equals Request CANCEL if dialog getState DialogState CONFIRMED 服务器端关键代码分析 requestEvent类为UAS提供了一个getRequest 方法用来接收请求 通过getMethod equals 方法来判断收到的请求消息类型 从而做出相应的响应 PublicvoidprocessRequest RequestEventrequestEvent Requestrequest requestEvent getRequest 服务器端关键代码分析 ServerTransactionif request getMethod equals Request INVITE 如果UAS收到INVITE请求 则通过messageFactory类中的createResponse 方法创建100 TRYING响应 服务器端关键代码分析 如果UAS收到BYE请求 则通过createResponse 方法创建200 OK响应 并通过messageFactor 方法发送该响应 通话结束 publicvoidprocessBye Responseresponse messageFactory createResponse 200 request serverTransactio

温馨提示

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

评论

0/150

提交评论