Sipdroid涉及到的協議之RFC3261

Sipdroid是不斷的向服務器發送Message來實現和服務之間的通信的,發送統一是由org.zoolu.sip.provider.SipProvider提供的sendMessage來實現的,因此在SipdroidEngine中的startEngine初始化整個項目中的核心類的時候,這些類的構造函數中都SipProvider這個參數.

(設計的幾個核心類包括:UserAgent  RegisterAgent  KeepAliveSip  UserAgentProfile,這幾個類中都擁有SipProvide參數,它們都指向的是同一SipProvider對象)

下面來扯下淡:
既然數據都是由SipProvider來進發送和接受的,那麼很明顯的,跟服務直接進行對接的任務理所當然的就應當由SipProvider來實現,UserAgent  RegisterAgent。。。。。。所有的目的就只可能有一個了,對要發送的message來進行封裝

(僅代表個人觀點,沒研究證實)


接受服務器返回的消息是通過SipdroidProviderListener中的onReceiveMessage()來實現的,添加SipdroidProviderListener只能通過SipProvider的addSipdroidListener()這個函數,而SipProvider在初始化的時候又作爲參數傳給了Sipdroid項目所設計的絕大多數核心類,因此這些核心類就能夠直接實現SipProviderListener接口然後直接調用sipProvider.add(this)來實現自己對服務器返回數據的監控.

具體的怎麼個實現法,目前還不是很清楚。

但是客戶端在像服務器發送消息的時候,必然要設計一個東東-RFC3261,也就是服務器和客戶端之間的通信協議,如果要實現發送我們自己定義的message,那麼我們就得對照着RFC3261中的參數來看Sipdroid中的源碼,這樣才弄的明白,它裏面包含的那麼多的參數是什麼意思。

Class Message supports all methods and header definened in RFC3261, plus。(Sipdroid源碼中的message類的說明)

下載協議中文版說明文檔:

 RFC3261 中文.pdf (1.28 MB, 下載次數: 383) 



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

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