基于SIP的SoftPhone的设计与实现

发布时间:

23卷第12
 
200312
文章编号:1001-9081(200312-0099-02
计算机应用
ComputerApplicationsVol.23,No.12 
Dec.,2003
基于SIPSoftPhone的设计与实现
虞志文,史济建
(浙江大学计算机科学与技术学院,浙江杭州310027
 :介绍以SIP为会话控制协议的一个支持视频和音频的多媒体可视软件电话SoftPhone的设计和实现其软件以Linux为平台,KDE/QT为开发工具,分为用户界面多媒体会话用户注属性设置和多媒体会话控制五个模块
关键词:SIP;代理服务器;多媒体通话;信号和插槽中图分类号:TN915.04  文献标识码:A
DesignandImplementationofSoftPhoneBasedonSIPProtocol
YUZhi2wen,SHIJi2jian
(CollegeofComputerScience,ZhejiangUniversity,HangzhouZhejiang310027,China
Abstract:SoftPhoneisasoftwarewhichcansustainaudioandvediomultimediasession.ThisthesisdesignedandimplementedthissoftwarebasedonSessionInitiationProtocol.SoftPhonecanbeexecutedonLinuxanddevelopedbyKDE/QT.SoftPhoneiscomposedofuserinterface,multimediasession,userregistration,propertymanagementandcontrolofmultimediasession.
Keywords:SIP;proxyserver;multimediasession;signalandslot
1 引言
SessionIProtocolIETF标准的一部分,SIP用来生成,
数据的采集和播放,支持多种压缩算法
SoftPhone由以下模块组成:
属性设置模块分为SIP网络属性音频属性视频属性三个方面
用户界面模块是用户操作界面,包含了视频显示多媒体通话模块处理通话,包括音频视频
用户注册模块包括用户注册信息输入,并向服务器注册。多媒体通话控制模块完成SIP用户代理(UA功能
修改和终结一个或多个参与者之间的会话这些会话包括因特网多媒体会议IP电话通话和多媒体发布。会话中的成员能够通过组播或单播联系的网络来通信SIP支持各种会话描述SoftPhone就是能使用户参与以上会话的一个客户端软件SoftPhone是基于SIP协议的,SIP正逐步成为NGN(下一代网络3G多媒体子系统域中的重要协议。随着支SIP网络的建设,支持SIP的客户端软件和智能多媒体终端会越来越多
3 软件的设计与实现
SoftPhone软件在Linux上用KDE/QT开发工具实现3.1 属性设置模块的实现
KDE为我们提供了一个KConfig,通过指定键和值对
2 SoftPhone的功能组成
来管KConfigKApplication::
sessionConfig得到,通过其成员函数readEntrywriteEntry
分别来读取和保存属性设置;通过setGroup来给属性分组,
1 SoftPhone与服务器的通信
SIPAudioVideo三个组,并为每个组提供属性设置的用户输入界面
3.2 用户界面模块
QT提供了所有希望在GUI框架中找到的标准用户界面组
从图1可以看出,SoftPhone的功能主要有:
1注册功能把用户注册到代理服务器,使得代理服务器能找到它,SoftPhone2
2发起请求。向代理服务器发出请求并处理响应。如SoftPhone1发出了建立和SoftPhone2通话的请求,然后建立了两者之间的通话
3接受请求。处理对自己的通话请求。如SoftPhone2接受了通话请求
4通话功能音频视频数据流的接受和发送;音频视频
件。这些可见组件都是一个窗口小部件。此外,QT提供了布局,这样在某些窗口小部件如QMainWindow上可以布置其它的窗口小部件。这样就可以建立符合要求的用户界面。
信号和插槽是QT处理事件驱动编程的方法,它可以把用户界面中用户触发的事件与应用程序中响应这个事件的代码连接起来按钮点击事件处理如下:
  收稿日期:2003-06-16  作者简介:虞志文(1977-,,浙江人,硕士研究生,主要研究方向:VoIP系统和软交换; 史济建(1961-,,浙江人,副教授,主要研究方向:人工智能、VoIP系统.
©1994-2010ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net

    100计算机应用2003
//点击按钮dial触发视图类实例view中的dialClick(方法
connect(dial,SIGNAL(clicked(,view,SLOT(dialClicked(;
利用信号和插槽可以实现状态的更新。在SoftPhone件中,当通话的对方状态改变时,这个状态改变要反映到视,显示给用户看可以如下实现:
//view为属性可见member,member中状态改变statusUpdated//事件触发view中的callMemberStatusUpdated事件connect(member,SIGNAL(statusUpdated(,view,SLOT(callMemberStatusUpdated(;
随时要访问消息的内容SIP消息分为请求和响应两类,由开始行头部和消息体三部分组成。大多头部项为关键词和值对,一些带有参数,ViaContact这样不止一个的头部项建立列表以便于访问3.5.2 基于SIP消息的多媒体通话控制的实现
这种方法要求两者的类直接或者间接继承Qobject
这种方法还将在以下各个模块中用到3.3 多媒体通话模块
多媒体通话包括两个过程:媒体设备采集到网络发送和网络接收到媒体设备播放
3 控制模块中类的关系图
一次会话从它刚开始建立到结束,用一个call:Call实例
来描。一,:members:CallMember来描述SIP协议是基于交易的,向任一对话方发送控制消息(Re2Invite,Info在一次交易中完成,对应于对话方member建立一个交易trans:Transaction来完成一次控制消息传输。最后把消息通过传输器发送出,传输器是一个UDP插口或者TCP插口,若它是面向连接(TCP,把它保存在实例call,用于接收响应消息。接收响应消息后,根据消息自身的信息把它匹配到响应call应的trans中处理,匹配规则在参考文献[1]
SoftPhone作为UAS要能够随时接收其它UAC发来的通话请求,client:Client实例负责接收请求和各个call中面向连接的消息,我们在Client中维护了一个描述会话的对象calls:CallClient还负责实际发送消息,因为它是发送和接收消息的信息专家
4解释了一次会话中发送Re2Invite控制消息改变会话参数时各个对象之间的协作图
2 媒体通信
通话模块包含一个对方会话描述和一个本地会话描述来
分别描述本地媒体的参数和对方媒体的参数,它们将用于设置媒体参数。这两个描述并不与特定媒体绑定,这体现了SIP对媒体支持的灵活性在发送Re2Invite请求时用于构建SIP消息的body,并可以通过Re2Invite请求修改它们,实现修改采用了信号和插槽方法:
//当通话对方curmember改变状态statusUpdated时触发本地的//memberStatusUpdated,并且重新设置媒体,通过重新启动后面//讲到的“发送过程"和“接收过程"
connect(curmember,SIGNAL(statusUpdated(,this,SLOT(memberStatusUpdated(;
Linux中对网络插口和设备的操作与对文件的操作类采集”是对声卡的读,发送”是对网络插口的写;接收”是对网络插口的读,播放”是向声卡写“采集”“播放”于同一个类该类负责对媒体(声卡的打开和读写等操作同样,发送”“接收”属于同一类。这两个类继承与同一个基类(DSP这样,就可以把“发送过程”“接收过程”归于同一个类该类继承线程类,执行的动作为:从一个DSP
读数据写到另一个DSP实例(。在(采集”“发送”
发送之间和接收之后处理媒体数据的压缩编码3.4 用户注册模块
用户注册模块包含用户注册信息输入和向服务器注册前者属于用户界面模块的一部分,实现一样。后者与多媒体控制模块紧密相连,当它与代理服务器通信时要调用多媒体控制模块我们把它单独列出是因为:第一,SoftPhoneSIP协议被称作用户代理(UA,UA正常工作必须先注册到代理服务器,这样才能接收到其它UA对它的呼叫;第二,为了使SoftPhone可以为不同用户注册使用3.5 多媒体通话控制模块3.5.1 SIP消息
SoftPhone通过SIP消息来控制多媒体会话SoftPhone
4 发送控制消息Info的协作图
请求Invite是建立会话的控制消息。与会话中请求不
,它会创建一个call:Call实例和一组members;所创建的交易的状态机与会话中请求所创建不同,对响应的处理也不同
参考文献
[1] SIP:SessionInitiationProtocol[S].RFC3261,2002.
[2] WrightGR,StevensWR.TCP/IPIllustrated[M].ChinaMa2
chinePress,2000.
[3] LippmanSB,LajoieJ.C++Primer[M].AddisonWesleyLong2
man,Inc,2000.
©1994-2010ChinaAcademicJournalElectronicPublishingHouse.Allrightsreserved.http://www.cnki.net

基于SIP的SoftPhone的设计与实现

相关推荐