`
icsnowing
  • 浏览: 40684 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
CallSetup
1) 首先,UAC向RegistrarServlet注册,RegistrarServlet继承SipServlet,doRegister ()对注册请求进行处理,其间,会对expires头进行判断请求是否过期;如果获得contact头,则response会发送200 ok给contact头,否则会发给from头,最后持久化to ,contact, expires到Registration。
2)注册完后,用户通过浏览器即可浏览已经注册的信息,ListWebServlet负责显示所有注册的用户信息,它继承自HttpServlet,通过持久层获得所有注册信息然后显示在页面上。
3)任意选择两个注册的用户来作为呼叫双方,发送会话建立请求,SipCallSetupServlet处理请求,进行双方的呼叫建立。
4)B2BCallServlet,继承SipServlet,doRequest()处理接收到的呼叫建立请求,双方呼叫建立。
5)PresenceServlet,继承SipServlet,处理关于在线状态的请求,包括在线状态的订阅、发布。
ClickToDial
1)index.jsp:选择用户,login界面。http://135.252.18.59:8080/ClickToDial
2)main.jsp:显示用户名单,并有call的一个click链接。
http://135.252.18.59:8080/ClickToDial/main.jsp
3)LoginServlet:HTTP Servlet,处理/login请求。
4)placeCallServlet:HTTP Servlet,处理/placecall请求。生成Invite请求,记录会话发起方的地址,生成SDP会话。
5)RegistrarServlet:SIP Servlet,处理注册请求doRegister()
6)CallSipServlet:SIP Servlet。实现了SipSessionListener接口。处理BYE请求和200 OK响应。
7)ModelFacade:实现ServletContextListener接口,上下文初始化、增加/删除用户、获取用户信息等。
8)Person:实现Serializable接口,功能:获取/设置用户名,获取/设置电话号码。

目前,数据库中只存有两个用户名:Alice和Bob。以Alice(或Bob)在界面上login,即显示出当前用户Alice及所有用户信息,包括Name、SIP URI和“call”的链接。选用客户端X-Lite进行测试,将用户名设为Alice(或Bob),注册,即可在main.jsp中显示出注册用户的SIP URI。点击“call”即可与Bob建立连接。
VideoShare
代码结构非常简单,只有四个源文件。
1)  VideoShareSession:定义了VideoShareSession类
2)  SipServletClass:SIP Servlet。处理SIP信令。doInvite()、doAck()、doBye()、doResponse()
3)  RtspRequest:实现了Runnable接口,多线程。处理实时媒体流。
4)  Utils:被RtspRequest类中的方法调用。

PersonalAssistant
参考http://dev2dev.bea.com.cn/techdoc/20060815866.html,实现原理的个人理解如下:
    1)AssistantSipServlet:请求到来,进行处理。
         Invite:
① 返回100 trying给UAC
② 创建一个SipApplicationSession实例
③ 创建一个AssistedCall实例
④ startAssistedCall()
à 创建一个CallerToVMSCall实例(第一种呼叫流模式CallerToVMSCall)
à startCall()
à 创建一个IMediaController接口称为mediaController,真正实现是
SipVxmlMediaController
à createVxmlSession()
à connectVxmlSession()
         Request:
① 生成ISipDialog,其中ISipDialog是一个接口,实现它的类是
SipMediaControllerAdapter
② 将SIP消息传给mediaController
③ doSipServletMessage()
à doSipServletRequest()
à 方法为“BYE”,生成200 OK,send()
         Response:
① 生成ISipDialog,其中ISipDialog是一个接口,实现它的类是
SipMediaControllerAdapter
② 将SIP消息传给mediaController
③ doSipServletMessage()
à doSipServletResponse()
à 响应是200 OK,分INVITE和BYE两种方法来处理
à 响应大于等于400,处理

    2)AssistantHttpServlet:请求到来,进行处理。Service()
对”action”分情况处理:
à web浏览器的请求控制器,dispatch()
à MRF的HTTP请求控制器,触发关联的AssistedCall对象
à doCalleeChoice()
à transferCallerToValediction()(第四种呼叫流模式CallerValedictionTransfer)
à transferCallerToCallee()(第三种呼叫流模式CallerCalleeTransfer)
à doRecordCallerName()
à call.locateCallee()
à tryNextDeviceURI()
à new CalleeToVMSCall()(第二种呼叫流模式CalleeToVMSCall)

分享到:
评论

相关推荐

    lingo讲义及示例程序

    《lingo讲义及示例程序》是一份包含详尽教程和实践案例的资源包,主要针对使用lingo软件进行优化问题求解的学习者。Lingo是一款强大的数学建模语言和求解器,广泛应用于运筹学、管理科学、工程优化等领域。本资源包...

    斯凯mrp示例程序sgl框架

    斯凯MRP示例程序SGL框架是一种专为MRP(物料需求计划)设计的软件开发框架,旨在简化和加速企业资源规划系统中的物料管理部分的开发过程。这个框架是斯凯公司为开发者提供的工具,它包含了一系列预先设计的组件和...

    Windows程序设计示例.rar

    《Windows程序设计示例》这个压缩包文件包含了多个章节的示例程序,旨在帮助学习者深入理解Windows平台上的程序设计。这些章节涵盖了从基础到高级的多种技术,为程序员提供了丰富的实践素材。以下是对每个章节内容的...

    基于FFT的频谱信号分析Matlab示例程序

    `说明.txt`文件可能包含了关于如何运行这个示例程序,以及如何解读结果的详细说明。在实际操作中,理解信号的频率成分对于识别信号特征、噪声滤波、信号恢复等任务至关重要。 FFT的应用广泛,包括音频分析、图像...

    DEA入门讲义和示例程序

    通过学习"DEA入门讲义和示例程序",不仅可以掌握DEA的基本原理,还能掌握如何在实际问题中运用DEA进行数据分析和决策支持。对于管理者、经济学家、运筹学爱好者来说,这是一份非常有价值的资料。

    TMS320F28x源码解读 程序

    《TMS320F28x源码解读——深入理解数字信号处理器的精髓》 在数字信号处理领域,TMS320F28x系列芯片因其高性能、低功耗的特点,被广泛应用于各种复杂系统中,如工业自动化、电力控制、通信设备等。这些系统的核心...

    DXF 文件阅读程序

    本项目提供的"DXF文件阅读程序"是一个示例程序,可以帮助开发者了解如何使用第三方类库解析和处理DXF文件。 在编程中,处理DXF文件通常需要特定的库或API,这里提到的程序可能是基于某个国外的类库。这类库可能包括...

    biogeme program and manual 程序、示例和操作手册

    "biogeme program and manual" 是一个专门用于离散选择模型(Discrete Choice Model)估计的软件工具,它包含了程序、示例数据和详细的操作手册。"离散选择"是一种统计方法,常用于分析个体在多个选项之间做出决策的...

    Excel经典应用实例(示例文件与模板)

    以下是对其中一些关键知识点的详细解读: 1. 数据分析与处理:Excel在数据管理方面具有强大的功能,包括排序、筛选、合并单元格、查找替换等。例如,通过使用“数据”菜单中的“排序”和“筛选”功能,可以快速整理...

    C单片机汇编语言程序设计新解读实用PPT课件.pptx

    4. **示例解析**: - `ORG 0000H`:程序从0000H地址开始。 - `DB 01001010B, 23o, 23, 78H`:定义字节数据,可以是二进制、八进制、十进制或十六进制常量。 - `DW "AA"`:定义数据字,`"AA"`在内存中以41H, 41H...

    ArcGIS Server sliverlight 完整示例

    【ArcGIS Server Silverlight 完整示例】是基于Esri公司的地理信息系统(GIS)产品ArcGIS Server和Microsoft的Silverlight技术开发的应用程序模板。这个示例提供了丰富的地图交互功能,用户可以直观地查看、分析和...

    ds1820的中文资料和程序(C程序和汇编程序)

    描述中提到的“读温度的程序”,意味着包含两种编程语言实现的示例代码: 1. **C语言程序**:C语言是一种通用编程语言,适合编写操作系统、设备驱动和嵌入式软件。DS1820的C语言程序可能包含初始化、发送命令、读取...

    01 FU68XX FOC方案样例程序.rar_foc code_fu681*_keil 添加FU68xx_峰岹FU6818方

    蜂笤的fu6818无传感器风机方案源代码

    20个plc样例程序

    10. 错误处理与诊断:如何在程序中设置错误检查和异常处理机制,以及如何解读PLC的故障代码。 11. 系统配置与通信:了解如何设置PLC的参数,以及与其他设备(如HMI、上位机、其他PLC)的通讯。 通过深入学习和分析...

    halcon例程解读

    本程序实例是一个光学字符识别的示例程序,用于读取啤酒瓶上的数字。程序主要分为两个部分:图像分割和光学字符识别。图像分割部分将图像分割成单个数字区域,然后对每个数字区域进行阈值处理和形状特征填充。光学...

    PIC单片机C程序实例

    "PIC单片机C程序实例" 指的是基于PIC微控制器的C语言编程示例。PIC单片机是Microchip Technology公司生产的一种广泛应用的微控制器(MCU),它以其高效能、低功耗和广泛的型号选择而闻名。C语言是一种结构化编程语言...

    27个经典趣味C++程序实例

    以下是部分示例的详细解读: 1. **100米比赛排名**:这个程序可能涉及到数组和条件语句,用于模拟一场短跑比赛,计算参赛者的成绩并按顺序排列。程序员可以学习如何处理数据结构和逻辑控制,理解排序算法。 2. **...

    speex的一个简单示例

    **标签解读:** 标签“c c++”表示这个示例代码可能是用C或C++语言编写的。由于Speex库本身提供了C语言接口,因此很可能这个示例代码是用C语言实现的,也可能涉及到C++,尤其是如果封装过程使用了面向对象的特性。 ...

    window程序设计 配套光盘

    光盘中的资源可能还包括示例代码、练习题解答、实验指导等,这些都是学习Windows程序设计的宝贵资料。通过实践这些示例,读者可以更直观地理解Windows编程的原理和技巧,提升自己的编程能力。对于想要深入学习...

    VB入门程序源码access初级应用

    综合以上信息,这个压缩包包含的内容可以被解读为一个简单的VB应用程序,该程序设计用于连接和操作Access数据库。学习者可以通过分析和运行这些源码来学习如何在VB中创建用户界面,以及如何使用VB的ADO(ActiveX ...

Global site tag (gtag.js) - Google Analytics