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

正文內(nèi)容

基于sip協(xié)議的即時消息系統(tǒng)設(shè)計(編輯修改稿)

2025-06-19 18:22 本頁面
 

【文章內(nèi)容簡介】 Success 5xx(500~599) Server error 3xx(300~399) Redirection 6xx(600~699) Global failure SIP即時消息即時消息(IM)指的是近似實時的消息交互。即時消息通常很短,雖然并不要求這樣。IM通常用于會話模式,也就是說,消息的交互是一來一回的,并且很快,近似于交互式的會話。RFC 3428 提出了MESSAGE方法,擴展了SIP協(xié)議以傳送IM消息。由于MSEEAGE是SIP消息,所以它繼承了SIP協(xié)議所有的路由和安全特性。 MESSAGE用MIME格式的body攜帶具體內(nèi)容。MESSAGE本身并不建立dialog;在多數(shù)應用里,每條IM消息都是獨立的,頗似分頁消息。 MESSAGE也可以在dialog內(nèi)發(fā)送。 適用范圍用SIP傳遞即時消息,有兩種模式:pager模式,用信令傳遞IM,消息之間沒有明確的聯(lián)系,或者說“會話”的概念僅存在于用戶的想象中。 session模式,用INVITE建立,用BYE結(jié)束的一個會話,IM是其中的媒體流。兩種模式都有存在的價值(設(shè)想一下騰訊公司的普通消息和UDP直連的對話模式)。本文只關(guān)心pager模式。MESSAGE消息之間不關(guān)聯(lián)。所有的消息不必在dialog中走,不必然走相同的路由,由于 IM消息的流量通常很大,這樣就不會引起擁塞問題。一個MESSAGE走indialog的例子:voice會話的一個參與者想同其中的一人進行IM交互(即想給正在通話的人發(fā)消息),這時把IM和該會話聯(lián)系在一起是比較合理的。但純粹是為了把幾個IM聯(lián)系在一起而讓MESSAGE都走indialog是不允許的。 SIP即時消息通信流程下面描述User1向處于一個Domain()中的User2,發(fā)送即時消息的過程,經(jīng)過一個簡單代理Proxy。 即時消息接續(xù)流程1. UserMESSAGESIP:user2@SIP/Via:SIP/branch=z9hG4bK776sgdkseMaxForwards:70From:sip:user1@。tag=49583To:sip:user2@CallID:asd88asd77a@CSeq:1MESSAGEContentType:text/plainContentLength:18Methodtype為MESSAGE,使用TCP協(xié)議發(fā)送有擁塞控制,Body類型text/plain,body長度18。2. 代理Proxy收到請求F1,到數(shù)據(jù)庫中查詢User2(注冊過程中生成數(shù)據(jù)庫),User2@@,生成信息F2。MESSAGESIP:user2@SIP/Via:SIP/branch=z9hG4bK123dsghdsVia:SIP/branch=z9hG4bK776sgdkse;received=MaxForwards:69From:sip:user1@。tag=49394To:sip:user2@CallID:asd88asd77a@CSeq:1MESSAGEContentType:text/plainContentLength:183. User2收到F2,顯示,向Proxy產(chǎn)生響應消息F3SIP/200OKVia:SIP/branch=z9hG4bK123dsghds。received=Via:SIP/branch=z9hG4bK776sgdkse;received=From:sip:user1@。tag=49394To:sip:user2@。tag=ab8asdasd9CallID:asd88asd77a@CSeq:1MESSAGEContentLength:0直接回應沒有Body(200OK不能帶body,,也不能攜帶Contact頭域)4. 服務器收到F3去掉最頂端的Via,向下一個Via標識的地址(User1)發(fā)送F4。SIP/200OKVia:SIP/branch=z9hG4bK776sgdkse。received=From:sip:user1@。tag=49394To:sip:user2@。tag=ab8asdasd9CallID:asd88asd77a@CSeq:1MESSAGEContentLength:0 IM中INFO消息與MESSAGE的區(qū)別傳輸MESSAGE方法,也就是即時消息,和INFO方法相比,我認為主要區(qū)別,是MESSAGE不用建立連接,直接傳輸信息,而INFO必須在建立INVITE的基礎(chǔ)上傳輸。 小結(jié)軟交換技術(shù)作為下一代網(wǎng)絡(luò)的一個前奏已經(jīng)在通信界奏響,包括中國在內(nèi)的多個國家運營商已經(jīng)就整個軟交換體系進行試驗[12]。國內(nèi)的中國電信、網(wǎng)通、鐵通已經(jīng)為在為軟交換網(wǎng)絡(luò)的演進做實驗方案。SIP在各個運營商、設(shè)備生產(chǎn)商的推動下也在迅速地發(fā)展,目前像北電、愛立信、思科、中興、華為等大的電信制造商已經(jīng)在自己產(chǎn)品上支持SIP。由于SIP協(xié)議在制定時突出的是個性化服務,因此就運營角度來講還存在很多方面需要完善。目前特別是Microsoft在其Windows XP版本中,已經(jīng)內(nèi)置SIP,作為其Windows Messanger的通信協(xié)議,迫于這種壓力,相信運營商、制造商將會加緊速度使得SIP標準化。在用戶需求多樣化的今天,運營商需要軟交換這樣的一個網(wǎng)絡(luò)體系架構(gòu)來部署自己的網(wǎng)絡(luò),同時也需要SIP這樣的一個協(xié)議來支持用戶個性化服務。相信隨著軟交換產(chǎn)品的不斷成熟SIP將會作為一個主流的通信協(xié)議。3 實踐部分 開發(fā)庫介紹 常見開發(fā)庫隨著VoIP和NGN技術(shù)的發(fā)展,,Openh323占統(tǒng)治地位。而然當在SIP時代,則出現(xiàn)了群雄割據(jù)的狀況,靈活,于是各種協(xié)議棧層出不窮,最具有代表性的5個開源項目是:OPAL、VOCAL、sipX、ReSIProcate、oSIP?! PAL是Open Phone Abstraction Library,是Openh323的下一個版本,它仍然使用了Openh323的體系結(jié)構(gòu),并在其基礎(chǔ)上進行擴展,同時實現(xiàn)了SIP,但在音頻和視頻的編碼和傳輸部分有較大改動。OPAL初衷設(shè)計是包含任何電話通信協(xié)議,所以其底層進行了高度的抽象化,所以也能夠很容易的支持MGCP,PSTN和將來會出現(xiàn)的協(xié)議?,F(xiàn)有的OPAL還非常不完善,BUG也非常多,不過相信以O(shè)penh323的開發(fā)班底,一定能讓OPAL十分優(yōu)秀。,VOCAL應該是目前功能最完善,還包括了h323與sip轉(zhuǎn)換網(wǎng)關(guān),不支持windows平臺,而且自從vovida被CISCO收購以后就停止了開發(fā)。sipX是一個SIP系統(tǒng),由SIP Foundry開發(fā)。sipX是從reSIProcate分離出來的,sipX除了包括SIP stack外,還包括了sipXphone,sipXproxy,sipXregistry等等,由它們構(gòu)成了完整的SIP系統(tǒng),而且sipx還支持嵌入式系統(tǒng),各個模塊可以按需取舍。不過可惜是幾乎沒有任何開發(fā)文檔。ReSIProcate同樣也是由SIP Foundry開發(fā),ReSIProcate最開始起源于Vocal,由于Vocal開始只支持rfc3254,為了支持最新的rfc3261,ReSIProcate誕生了,但現(xiàn)在,ReSIProcate已經(jīng)成為一個獨立SIP協(xié)議棧了,它十分穩(wěn)定,并且很多商業(yè)程序都在使用。oSIP的開發(fā)開始于2000年7月,第一個版本在2001年5月發(fā)布。它采用ANSI C編寫,而且結(jié)構(gòu)簡單小巧,所以速度特別快,它并不提供高層的SIP會話控制API,它主要提供一些解析SIP/SDP消息的API和事務處理的狀態(tài)機,oSIP的作者還開發(fā)了基于oSIP的UA lib:exosip和proxy server lib:party sip?!【C合上述評測,可以看出5種SIP協(xié)議棧各有千秋,OPAL有發(fā)展?jié)摿?,VOCAL比較完善,sipX兼容性好,ReSIProcate較穩(wěn)定,oSIP小巧而快速。所以要根據(jù)應用的不同選擇恰當?shù)膮f(xié)議棧進行研究開發(fā)。 本文中為了簡單起見,選用Microsoft的非開源庫RTC Client API,下面簡單介紹該庫。 RTC Client API介紹Windows Messenger 客戶端利用了 Windows XP RTC Client 組件。此客戶端可在單個應用程序中提供所有 RTC 功能。RTC 基于 Internet 技術(shù)和協(xié)議標準,可使其他使用這些技術(shù)的設(shè)備和應用程序與 Windows Messenger 客戶端進行通信。為了訪問 Windows Messenger 所使用的 RTC 客戶端功能,Windows XP 通過 RTC Client API 提供了 RTC。此 API 使應用程序能夠進行 PC 到 PC、PC 到電話以及電話到電話的呼叫;可以在應用程序中添加功能,創(chuàng)建通過 Internet 或 Intranet 的 IM 會話;可以在用戶的 PC 之間建立語音和視頻呼叫;可以檢索并顯示一組聯(lián)系人的現(xiàn)場信息;還可以添加應用程序和白板共享,以加強協(xié)作。內(nèi)部開發(fā)組可使用這些 API,在其內(nèi)部工具中添加 RTC 功能;軟件供應商可以使用 RTC API 將 RTC 與其應用程序集成,或者建立專門的應用程序進行銷售活動或滿足客戶需要;電話服務提供商也可以創(chuàng)建應用程序,為居民或公司客戶提供電話服務;打算銷售 RTC 服務的電信提供商可以使用這些 API 創(chuàng)建自己的客戶端應用程序??梢允褂?C++ 、Visual Basic和C 創(chuàng)建這些應用程序。RTC 的基本代碼模型為 COM。RTC 中用于通信的對象包括 Client、Session 和 Participant 對象。 RTC Client API的對象模型Client 對象。Client 對象實現(xiàn) IRTCClient 接口,并為會話設(shè)置允許的會話類型和參數(shù),例如首選設(shè)備和媒體類型、比特率及其他媒體屬性(如音量和消除回音)。此接口還可用于創(chuàng)建 Session 對象。Session 對象。Session 對象通過 IRTCClient::CreateSession 方法創(chuàng)建,用于管理會話。此對象實現(xiàn) IRTCSession 接口,該接口用于啟動、應答或終止會話、添加參與者以及進行其他會話管理。此對象支持 IM 和所有其他會話類型。例如,Session 對象可用于創(chuàng)建與合作者的 IM 會話,或啟動與 Web 站點客戶代表的音頻呼叫。Participant 對象。Participant 對象通過 IRTCSession::AddParticipant 方法創(chuàng)建,包含所有與會話參與者有關(guān)的方法,包括參與者的姓名和當前狀態(tài)。此對象實現(xiàn) IRTCParticipant 接口。現(xiàn)場信息通過 Buddy 和 Watcher 對象來管理。這些對象提供的接口可用于管理與聯(lián)系人和現(xiàn)場合作伙伴有關(guān)的檢索信息。Buddy 對象。Buddy 對象用于管理、設(shè)置和檢索有關(guān)聯(lián)系人的信息。Buddy 對象在通過 IRTCClientPresence::AddBuddy 方法添加聯(lián)系人時創(chuàng)建(IRTCClientPresence 在 Client 對象中實現(xiàn))。通過此對象的 IRTCBuddy 接口,可以檢索聯(lián)系人的姓名和狀態(tài)等信息。Watcher 對象。Watcher 對象用于檢索有關(guān)觀察者(已將您添加為聯(lián)系人的人)狀態(tài)的信息。此對象也通過 IRTCClientPresence 接口添加,但使用的是 AddWatcher 方法。使用此對象的 IRTCWatcher 接口中實現(xiàn)的方法,可以檢索觀察者的狀態(tài)和其他信息。++實現(xiàn)SIP IM客戶終端 本IM客戶終端可完成代理服務器登陸、終端存在狀態(tài)檢測、即時消息發(fā)送和接收、語音聊天、視頻顯示等功能。1. 初始化RTC下面的代碼片段描述RTC對象的創(chuàng)建和初始化HRESULT hr = S_OK。// RTC 初始化 ,因為RTC應用程序不是線程安全的,故使用Apartment線程模型::CoInitializeEx(NULL,COINIT_APARTMENTTHREADED)。// 創(chuàng)建RTC Client COM對象IRTCClient *pIRTCClient。hr = CoCreateInstance( CLSID_RTCClient,NULL, CLSCTX_INPROC_SERVER, IID_IRTCClient, reinterpret_castvoid ** (amp。pIRTCClient) )。//錯誤處理 If (hr != S_OK), process the error here. // 初始化RTCClient接口hr = pIRTCClientInitialize()。// 錯誤處理 If (hr != S_OK), process the error here.2.創(chuàng)建并使能一個策略配置文件IRTCClientProvisioning *pIRTCClientProvisioning = NULL。IRTCProfile *pIRTCProfile = NULL。BSTR bstrXMLProfile= // XML Blob referenced in different sectionhr = pIRTCClientQueryInterface(IID_IRTCClient
點擊復制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1