Sipdroid中像服務器註冊是如何實現的(一)?

關於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:[email protected],用戶名+主機名。

登陸服務過程中的具體流程如下:

程序啓動便自動進行初始化,在初始化的過程中,每隔一段的時間,客戶端這邊就要發送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:[email protected]>
From: Bob <sip:[email protected]>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: <sip:[email protected]>
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:[email protected]>;tag=2493k59kd
From: Bob <sip:[email protected]>;tag=456248
Call-ID: 843817637684230@998sdasdh09
CSeq: 1826 REGISTER
Contact: <sip:[email protected]>
Expires: 7200
Content-Length: 0

這裏面涉及到很多參數,但是在RFC3261中都有詳細的介紹,但是比較的分散,詳見:SIP中涉及到的協議之-RFC3261

第二篇將給大家介紹下,發送的註冊消息體裏面的每個參數所代表的意義.

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章