Sipdroid中像服务器注册是如何实现的(一)?

来源:互联网 发布:南山区软件产业基地 编辑:程序博客网 时间:2024/06/06 22:19
关于Sipdroid是如何实现像服务器注册的

首先告诉大家代码块在哪里,注册的核心在RegisterAgent类中的函数register(int time)中,注册的核心是:


  1. //Create message re (modified by mandrajg)
  2. Message req = MessageFactory.createRegisterRequest(sip_provider,
  3. target, target, new NameAddress(user_profile.contact_url), qvalue, icsi);

  4. req.setExpiresHeader(new ExpiresHeader(String.valueOf(expire_time)));
复制代码

注册稍微简单一点,因为只是需要客户端和服务器进行绑定就行了,注册在SIP协议中称作登记服务,再向服务提供商进行注册的时候,服务提供商都会给我们一个URL,这个URL在Sipdroid中被封装在SipURL中的,这个URL写的格式如下:
sip:20847236@sip.tocall.cn,用户名+主机名。

登陆服务过程中的具体流程如下:

程序启动便自动进行初始化,在初始化的过程中,每隔一段的时间,客户端这边就要发送Register信息给服务器,Register中的信息包含了服务提供商分配给当前用户的SIP URI(通俗点说,SIP URI 就是客户端的标识,这个标识是必须是唯一的

服务器通过获得当前用户的URI便可以绑定这个用户,然后写到一个数据库中,在SIP协议中,这个叫做定位服务(location server)


发送的请求的格式如下:

F1 REGISTER Bob -> Registrar
REGISTER sip:registrar.biloxi.com SIP/2.0
Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>
From: Bob <sip:bob@biloxi.com>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: <sip:bob@192.0.2.4>
Expires: 7200
Content-Length: 0

注册会在2小时后超时。注册服务器回应一个200OK,返回的信息包含如下:

F2 200 OK Registar -> Bob
SIP/2.0 200 OK
Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7
;received=192.0.2.4
To: Bob <sip:bob@biloxi.com>;tag=2493k59kd
From: Bob <sip:bob@biloxi.com>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: <sip:bob@192.0.2.4>
Expires: 7200
Content-Length: 0

这里面涉及到很多参数,但是在RFC3261中都有详细的介绍,但是比较的分散,详见:SIP中涉及到的协议之-RFC3261

第二篇将给大家介绍下,发送的注册消息体里面的每个参数所代表的意义.

转自http://www.shouyanwang.org/thread-35-1-1.html

原创粉丝点击