sip学习笔记

分类: JAVA开发
1.javax.sip.ClientTransaction:
ClientTransaction应用可以理解为发送INVITE信息到UAS。ClientTransaction也用从SipListener接收到的回应进行匹配。和ServiceTransaction相对应。
方法:
ClientTransaction的方法:
Request createAck()
通过ClientTransaction创造一个关于当前的请求的正确应答。
void sendRequest()用于发送创建的请求消息。
这个类的调用意味着上层的应用是UAC。


2.javax.sip.Dialog:一个会话用来响应2个点对点的用户之间的联系,并保持联系一段周期。
3.javax.sip.DialogState: 这个类定义了会话的3种状态,Early, Confirmed, Terminated。
4.javax.sip.DialogTerminatedEvent: 当一个会话事务到达了terminated 状态,这个会话事务事件被传送到listen监听处去。


5.javax.sip.ListeningPoint:这个接口描述了一个唯一的网络监听地址,由传输的IP和端口组成。


6.javax.sip.RequestEvent:这个类描述了一个从SipProvider传送到SipListener的请求事件,是一种事件模式。一个应用(sipListener)被注册到SIP protocol stack(SipProvider),监听SipProvider传来的请求事件。
7.javax.sip.ResponseEvent:这个类描述了一个从SipProvider到他自己的SipListener的一个响应事件。


8.javax.sip.ServerTransaction : 
ServerTransaction可以通常被理解为一个会话状态机,SipProvider用来处理接收SIP事件和消息序列,将接收到消息发送到SipListener(侦听方法)的processRequest或者processResponse回调,通过用户代理服务器发送回应信息给应用程序。这个类让应用程序能发送一个回应对应SipListener收到的请求。
方法:
ServerTransaction中的方法:
sendResponse
应用希望发送一个响应时候,它创立一个来自MessageFactory创造的回应,然后回应传送到ServerTransaction的sendResponse方法。

serverTransaction作用:

被SipProvider用来处理Request消息,发送RequestEvent到 SipListener,还被UAS用来发送Response到UAC应用

SIP服务器完全是纯软件实现,可以根据需要运行于各种相关设备中。


9.javax.sip.SipFactory: 
SIPFactory是一个单类,用单一方式得到这个SipStack应用的执行权。SIPFactory单一的实例能用得到实例的方法(或者Singleton)而被得到。通过在SIPFactory里调用合适构造方法,一个代表被叫端的对象能从SIPFactory得到。创造一个被叫的SipStack,这样应用将可以调用SipStack中的方法。


10.javax.sip.SipListener:这个类代表SIP协议的负责侦听的应用程序端,这个接口定义了一个侦听端,接收处理从SipProvider提交的SIP事件消息,是一个抽象的侦听线程。
结构:
每个SIPStack或每个IP地址对应一个的Siplistener,而Siplistener与SipProvider的关系是一对多的关系。
11.javax.sip.SipProvider::这个

接口描述了SIP stack的消息实体。

注:在实现SipListener接口的各个函数时,有参数RequestEvent:表示由SipProvider传递给SipListener的Request event.

RequestEvent包含以下元素:

1).source:the source of the event i.e. the SipProvider sending the RequestEvent.

2).serverTransaction:与RequestEvent 相关的serverTransaction

3).Request:requestEvent封装由SipProvider 接收的Request信息传递给SipListener.

Request request = requestEvent.getRequest();


12.javax.sip.SipStack:提供了方法创建和删除SipProvider和 ListeningPoint,以便SipProvider能发送和接收消息。

一个应用程序中可以有多个SipProvider,每个对应一个Stack.

应用程序通过一个SipListener管理一个或多个SipProvider,SipProvider的行为依赖于应用程序的业务逻辑,当一个SipProvider建立之后,将被注册到一个SipListener,应用程序如果需要访问某个SipProvider,就通过SipListener向SipProvider发送消息。


13.javax.sip.Transaction:Transaction是一个基础的sip组件,这个接口描述了客户端到服务器的一个通用接口和普遍的方法。
14.javax.sip.TransactionTerminatedEvent:TransactionTerminatedEvent被传到Listener当事务转变到terminated状态。


15.javax.sip.address.Address:这个接口描述了用户的display名字和URI地址。
16.javax.sip.address.AddressFactory:这个接口提供了方法,允许程序创建地址对象,例如:URI, SipURI and TelURL。
17.javax.sip.header.ContactHeader:一个ContactHeader头变量提供了包含请求或是响应的URI。
18.javax.sip.header.HeaderFactory:这个接口提供了一组方法允许从一个JAIN SIP实例中创建Header object。
19.javax.sip.header.ToHeader:To header是最初被请求的需要者所描述,Requests and Responses必须包括一个ToHeader。


20.javax.sip.message.MessageFactory: 这个接口提供了一组方法允许应用程序从一个JAIN SIP实例中创建Request 和 Response消息。
21.javax.sip.message.Request:一个SIP Request是一个从客户端到服务器的请求。
22.javax.sip.message.Response:一旦请求地接受者收到一个请求,一个Response消息就被发送



注:

一个基于SIP呼叫只要有双方的用户代理UA参与就能完成,可以不需要网络服务器。

SIP协议的一个显著特点是一个INVITE消息可以同时被发送到多个目的地。


相关主题
相关文档
最新文档