亚洲综合伊人,成人欧美一区二区三区视频不卡,欧美日韩在线高清,日韩国产午夜一区二区三区,大胆美女艺术,一级毛片毛片**毛片毛片,你瞅啥图片

 首頁(yè) > 新聞 > 專家觀點(diǎn) >

利用基于原語的H.323協(xié)議棧開發(fā)VoIP系統(tǒng)

2013-11-18 17:11:21   作者:   來源:EET電子工程專輯   評(píng)論:0  點(diǎn)擊:


    圖2展示了與遠(yuǎn)程終端建立通信關(guān)系時(shí)H.323協(xié)議棧必須執(zhí)行的流程。注意,同一水平線上的流程可能同時(shí)運(yùn)行,但是他們都完成后該時(shí)序才能繼續(xù)下去。

    Q.931呼叫建立流程啟動(dòng)呼叫建立過程并且通知遠(yuǎn)程終端有一個(gè)呼入。當(dāng)呼叫建立起來后,某個(gè)終端可能啟動(dòng)H.245規(guī)定的主從判斷流程或能力信息互換流程。每個(gè)終端都需要執(zhí)行能力信息互換流程,但是只要一個(gè)終端執(zhí)行主從判斷流程就可以了。主從判斷和能力信息互換完成后,邏輯信道打通了。最后,該對(duì)話通過另一個(gè)Q.931流程關(guān)閉。

    盡管該時(shí)序看起來直接明了,而且一些依賴關(guān)系在標(biāo)準(zhǔn)中定義的比較松散,因而很難實(shí)現(xiàn)該時(shí)序。因?yàn)閮H依賴關(guān)系就占了H.245規(guī)范的257頁(yè)還多,實(shí)現(xiàn)時(shí)很容易疏忽。

    另一個(gè)導(dǎo)致混亂的問題起因于異步執(zhí)行的流程。例如,主從判斷流程可以在能力信息互換流程之前或之后執(zhí)行,而且可能同時(shí)或者相互覆蓋執(zhí)行。更有甚著,能力信息互換流程可能在一個(gè)閃斷信道(on the fly once channel)上執(zhí)行。這樣可以在對(duì)話期間動(dòng)態(tài)改變編解碼器,然而給協(xié)議棧開發(fā)增加了工作負(fù)擔(dān)。

    實(shí)現(xiàn)流程

    H.323定義Q.931為呼叫信令協(xié)議,在此,將描述怎樣實(shí)現(xiàn)實(shí)際的流程;谠Z的H.323協(xié)議棧要求應(yīng)用程序開發(fā)者定義原語并用其與下層通信。為了方便描述呼叫建立流程,我們從Q.931規(guī)范的25頁(yè)文檔中歸納出一個(gè)流程圖(如圖3)。

    當(dāng)實(shí)現(xiàn)呼叫建立流程時(shí),首先發(fā)送建立請(qǐng)求消息,然后該流程等待一條告警指示消息。當(dāng)該指示消息接收到后,該流程再次等待一條確認(rèn)消息。如果這條確認(rèn)消息也接收到了,該流程終止,應(yīng)用程序可以開始處理H.245流程。

    為了開發(fā)基于原語的H.323協(xié)議棧流程的狀態(tài)機(jī),開發(fā)者需要精通H.323協(xié)議,例如上述Q.931呼叫建立協(xié)議。注意,H.245流程比Q.931更具有面向狀態(tài)的特點(diǎn)。每個(gè)H.245流程必須按照標(biāo)準(zhǔn)規(guī)定的時(shí)序處理接收到的指示消息并發(fā)送請(qǐng)求消息。每個(gè)狀態(tài)機(jī)的具體實(shí)現(xiàn)將需要數(shù)月時(shí)間。

    如果采用替代方案,H.323協(xié)議棧不使用原語,協(xié)議棧需要包括一個(gè)已經(jīng)實(shí)現(xiàn)了上述流程和狀態(tài)機(jī)的中間層,并提供一個(gè)簡(jiǎn)化的應(yīng)用編程接口(API)。對(duì)于前面的例子,協(xié)議棧要發(fā)一個(gè)呼出,只需要調(diào)用下面這一個(gè)函數(shù)即可:

    在使用API實(shí)現(xiàn)的系統(tǒng)中,makeCall()函數(shù)接受遠(yuǎn)程端點(diǎn)的主機(jī)名字(hostname)和IP地址,并執(zhí)行所有呼叫遠(yuǎn)程終端的步驟。該方案需要一個(gè)流程構(gòu)造前述的原語,實(shí)現(xiàn)處理所有輸入輸出原語的狀態(tài)機(jī)。使用基于API的協(xié)議棧不需要理解原語接口,可以節(jié)省數(shù)月的開發(fā)時(shí)間。

    給原語參數(shù)賦值

    前文的例子描述了流程的實(shí)現(xiàn)。下面的例子展示怎樣給原語賦值,以能力信息互換流程的“TRANSFER.request”原語為例。

分享到: 收藏

專題