freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

osip協(xié)議棧及exosiportp等使用入門-wenkub.com

2025-07-17 16:56 本頁面
   

【正文】 好了,作了這么多的 分析,我們了解了 eXosip 是怎樣調(diào)用 oSIP 來形成被我能方便地再次調(diào)用的了,可以看到,為了實(shí)現(xiàn)最大限度的跨平臺和兼容性,代碼中有大量的測試代碼,宏定義和錯(cuò)誤再處理代碼,看起來非常吃力,但了解了其主要的調(diào)用框架: 初始化,回調(diào)函數(shù)設(shè)置, UAC 和 UAS 事務(wù)處理狀態(tài)機(jī)的啟動,事件處理流程等,就可以基本明白了 oSIP 各個(gè)函數(shù)的主要作用和正確的用法了,下一步,可以參考 eXosip 來針對某個(gè)應(yīng)用,去除掉大量暫時(shí)用不到的代碼,來構(gòu)建一個(gè)簡單的 SIP 軟電話和 SIP 服務(wù)器,來進(jìn)一步深入 oSIP 學(xué)習(xí)應(yīng)用了。transaction,NICT,reg)初始化UAC 狀態(tài)機(jī),實(shí)際也同 UAS 是調(diào)用的 osip_transaction_init 函數(shù),同樣使用osip_transaction_add_event(transaction,sipevent)將事件入狀態(tài)機(jī),狀態(tài)機(jī)隨后將自動處理調(diào)用相應(yīng)回調(diào)函數(shù)處理邏輯了。transaction,(osip_fsm_type_t)tx_type,eXosip.j_osip,evtsip)根據(jù)探測結(jié)果進(jìn)行狀態(tài)機(jī)初始化,實(shí)際調(diào)用的是osip_transaction_init,初始化后即將事件入狀態(tài)機(jī)osip_transaction_add_event(transaction,evt),由狀態(tài)機(jī)自動處理后調(diào)用相應(yīng)回調(diào)函數(shù)處理邏輯了。 根據(jù) jpipe_read(,buf2,499),我們可以估計(jì), buf2中應(yīng)該是保存的我們的控制管道的數(shù)據(jù),具體作用至些還沒有表現(xiàn)出來,應(yīng)該是用來反映一些狀態(tài)機(jī)內(nèi)部的警示之類的信息,實(shí)際的 SIP 的處理的狀態(tài)機(jī)的數(shù)據(jù)是存放在 buf 中,使用 _eXosip_recvfrom 獲取的,獲取后sipevent=osip_parse(buf,i)解析,使用osip_find_transaction_and_add_event(,sipevent)來查詢事件對應(yīng)的事務(wù)狀態(tài)機(jī),找到后就如同其注解所說明的, /*handled by oSIP! */,即我們上文設(shè)置的那一大堆回調(diào)函數(shù),至此,我們知道了整個(gè) SIP 應(yīng)用所處理的大概流程了。 前面簡單介紹了一下大量的回調(diào)函數(shù)及它們的概要處理邏輯,可能會比較混亂,暫時(shí)不用管它,只需要記得一個(gè)大概的形象,知道一個(gè) SIP 處理程序是通過 osip_set_cb_send_message 回調(diào)函數(shù)來實(shí)現(xiàn)真實(shí)地發(fā)送各種 SIP 消息,并且 SIP 的標(biāo)準(zhǔn)事務(wù)模型是由 oSIP 實(shí)現(xiàn) 好了,我們只需要給不同的事務(wù)狀態(tài)設(shè)置不同的回調(diào)處理函數(shù)來處理事務(wù),具體的狀態(tài)變化和內(nèi)部邏輯不用管就可以了。 OSIP_ICT_STATUS_2XX_RECEIVED uac 收到 2xx 消息,這里主要跟蹤一下Register 情況下的 2xx,表示注冊成功,這時(shí)會更新一下 exosip 的注冊字段值,以便讓 eXosip 能自動維護(hù) uac的注冊, BYE 的 2xx 回應(yīng)是終結(jié)消息, Invite 的2xx 回應(yīng),則主要是初始化一下會話相關(guān)的數(shù)據(jù),表示已成功建立連接。 看完兩個(gè)函數(shù),可以知道, eXosip 需要有兩個(gè) sock,是一個(gè)數(shù)組, 0 是給UDP 用的, 1是給 TCP用的,要用 SOCK 當(dāng)然要初始化,就是下文要介紹的eXosip 的網(wǎng)絡(luò)相關(guān)的初始化了,上面的 exosip_init 可以看成是這個(gè)開發(fā)庫的系統(tǒng)初始化吧: ) 至些,我們應(yīng)該知道 了 oSIP 開發(fā)的 SIP 應(yīng)用程序的消息是從哪里發(fā)出的吧,對了,就是從這個(gè)回調(diào)函數(shù)里,所謂萬事開頭難,就象開發(fā) WIN32 應(yīng)用程序時(shí),找到了 WIN32 程序的 main 函數(shù)入口下面的工作就好辦了,下面就都是為一些事件消息開發(fā)對應(yīng)的處理函數(shù)而已了: ) osip_set_kill_transaction_callback 事務(wù)終結(jié)回調(diào)函數(shù) 對應(yīng) ICT, IST, NICT, NIST 客戶 /服務(wù)器注冊 /非注冊事務(wù)狀態(tài)機(jī)的終結(jié),主要是使用 osip_remove_transaction(,tr)將當(dāng)前 tr 事務(wù) 刪除,再加上一系列的清理工作,其中, NICT 即客戶端的非 Invite 事務(wù)的清理比較復(fù)雜一些,要處理的內(nèi)容也比較多,可以根據(jù)實(shí)際應(yīng)用的情況進(jìn)行有必要的清理工作: ) cb_transport_error 傳輸失敗處理回調(diào) 對應(yīng)于上面說到的四種事務(wù)狀態(tài)機(jī),如果它們在處理時(shí)失敗,則在這時(shí)進(jìn)行統(tǒng)一處理。 由于我們大多數(shù)情況下 SIP 是用的 UDP,所以先來看一下cb_udp_snd_message 的實(shí)現(xiàn),它從全局變量 exosip 中獲取可用的 sock,并盡最大能力解析出 host 和 port(?難道前面的函數(shù)還不夠解析徹底 ?如 最終仍無port 信息則默認(rèn)設(shè)置為 5060),使用osip_message_to_str(sip,amp。raddr,sizeof(raddr))0) { OSIP_TRACE(osip_trace(__FILE__,__LINE__,OSIP_WARNING,NULL, Failed to bind one local socket%i! \n,aport)); }else break; } 含義即,依次檢 測 50個(gè)端口,從 static int aport=10500;即10500~10550 端口找出一個(gè)可用的本地端口來綁定 listen 模擬 pipe 的一對sock。 osip_set_application_context(osip,amp。osip)來初始化這個(gè)指針。t initialize transport layer! \n); return false; } 啟動事件監(jiān)聽線程: AfxBeginThread(sip_uac,(void*)this); 向 SIP Proxy 注冊: eXosip_clear_authentication_info(); eXosip_add_authentication_info(uname,uname,upwd,md5,NULL); real_send_register(30); /*自定義函數(shù)代碼請見源碼 */ 發(fā) 起呼叫 (構(gòu)建假的 SDP 描述,實(shí)際軟電話使用它構(gòu)建 RTP 媒體連接 ): osip_message_t*invite=NULL; /*呼叫發(fā)起消息體 */ int i=eXo
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1