999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于HTTP 協議的VoIP 終端在線查詢功能的設計與實現

2012-07-25 07:16:56田文武
微型電腦應用 2012年10期
關鍵詞:功能

田文武

0 引言

伴隨著Internet技術在全球范圍內的日益普及,諸多基于互聯網架構的新業務正如雨后春筍般涌現,VoIP(Voice over IP)就是一種典型的互聯網新興技術。和傳統的電路交換通信技術相比,VoIP技術以IP數據包的形式,傳輸通信過程中,產生的所有信令與實時音視頻數據,從而可以實現更為低廉的通訊成本。同時,由于基于開放的IP網絡架構,結合當前最新的處理器芯片和嵌入式操作系統技術,VoIP終端可以實現許多傳統電話無法提供的新應用,如傳真、視頻、數據等,最終為用戶提供更為便利的通信服務。本文所介紹在線電話簿、實時天氣預報功能,就是對VoIP終端產品功能擴展的一次積極嘗試。

圖1 HTTP客戶端分層設計框圖

1 HTTP客戶端模塊的結構設計

首先,該功能模塊是基于ARM-LINUX嵌入式平臺開發的,在系統中處于中心地位的是一個獨立的VoIP進程,它包含了VoIP終端主要的功能實現。

HTTP客戶端模塊包含:HTTP客戶端應用接口層,它可以被VoIP進程中各線程共享調用;HTTP客戶端線程,它可以滿足VoIP進程中,其他線程實時并發地訪問遠端HTTP服務器的需要;客戶端API的語法編解碼模塊,它服務于HTTP客戶端API,使其能夠對HTTP報文、XML/XHTML數據等進行高效的解析與構建。HTTP客戶端的功能設計框圖,如圖1所示:

圖1中,MMI(Man-Machine Interface)線程主要負責用戶與VoIP終端的人機交互任務。通過MMI線程,用戶訪問遠端服務器數據的場景有兩種:一種是手動訪問的方式;另一種是自動訪問的方式。對于手動方式,MMI線程可以直接調用HTTP客戶端API函數進行訪問;但這種方式存在如何有效縮短手動訪問時延的問題。另外一種自動訪問的方式,是通過獨立的HTTP客戶端線程來實現的;該方式面臨著另一個問題:如何實現MMI線程與HTTP客戶端線程之間的數據同步問題。上述兩個問題的具體分析與解決,均將在第三節中進行闡述。每次對遠端服務器數據的訪問,無論以手動方式還是自動方式,均遵循相同的基本流程,如圖2所示:

圖2 通過HTTP客戶端API訪問遠端服務器流程圖

上層模塊(MMI線程或HTTP客戶端線程等)傳遞相關的參數給HTTP客戶端API層;

API層調用相應的報文編碼函數根據上層傳遞的參數構建出請求報文;

調用Linux套接字API建立與遠端HTTP服務器的TCP連接;

一旦連接建立成功,發送請求報文,同時等待接收響應報文;

當成功接收到響應報文,HTTP客戶端API層將調用相應的報文解析函數對報文進行解析;

將解析得到的數據返回給上層模塊,并關閉TCP連接。

如果連接建立失敗、響應超時或失敗,同樣要將錯誤的結果返回給上層。

2 關鍵技術

2.1 HTTP客戶端API模塊非阻塞通信機制的實現

圖2描述了HTTP客戶端API層訪問遠端服務器的過程。調用socket()創建一個socket文件描述符,其內核屬性默認為阻塞模式。當建立連接或接收響應數據時,如果直接調用connect()或recv()對創建的socket描述符進行操作,調用結果返回之前,當前線程會被掛起,該調用方式成為“阻塞調用”。在“阻塞調用”模式下,如果遠端服務器不存在或服務器端不返回數據,connect()/recv()函數就會長時間無法返回,進行該調用的線程將被長時間掛起,而這對于用戶而言顯然是無法接受的。如何解決該問題?

Unix/Linux中,系統調用select()經常在阻塞調用的非阻塞化場合被用到。其函數聲明如下:

select()函數提供了一個fd_set的數據結構,它是一個長整型的數組,每一個數組元素都能與一個打開的文件描述符(如socket描述符)相關聯。當調用select()時,由內核根據I/O狀態修改fd_set的內容,由此來通知執行了select()的進程哪一個socket或文件可讀寫。同時select()還提供了一個timeval結構,在調用時,如果超過了timeval參數所指定的時間長度仍然沒有文件描述符滿足條件,select()就會直接返回。通過timeval參數可以定制符合用戶要求的最大等待時間(建立連接、接收響應數據等)。

非阻塞連接建立過程如下:

A. 建立socket,將socket文件描述符設為非阻塞模式;

B. 調用connect()函數,建立與socket綁定的連接(該調

用會立刻返回);

C. 調用select()檢查socket是否可讀寫;

D. 根據select()返回值判斷connect()的結果:成功、超時或失敗;

E. 將socket重新設置為阻塞模式。

區別于非阻塞連接過程,由于網絡數據傳輸本身的時延效應,需要在不改變socket描述符阻塞屬性的情況下,通過動態輪詢的方式來實現非阻塞的數據接收過程,如圖3所示:

圖3 非阻塞數據接收過程

N表示最大輪詢次數,以SELECT_T 代表Select()調用的超時時間,則整個數據接收過程的時間延遲最大為

實際測試表明,通過select()函數實現的非阻塞網絡通信機制,可以實現通信過程中實時性和可靠性的有效平衡。

2.2 MMI與HTTP客戶端線程間的數據傳遞和同步機制

VoIP進程的每個線程均是基于一種消息或事件驅動的自循環模型設計的。

這種由消息或事件驅動的自循環線程模型,如圖4所示:

圖4 消息/事件驅動的自循環線程模型

在每次循環過程中,線程檢查是否有新的消息傳入或事件發生;若發現新的消息或事件,則進行相應的處理,完成后進入下次循環過程,若當前沒有新的消息或事件,則繼續等待消息/事件的到來,直到定時器超時進入下次循環。

HTTP客戶端線程的特殊之處在于,它一直等待請求消息而不會超時,一旦受到請求消息就立即處理,并返回響應消息給外部請求發送者,然后進入下一個等待周期。

當MMI線程需要自動訪問遠端服務器時,直接向HTTP客戶端消息隊列發送一個請求;處于“等待”狀態的HTTP客戶端線程收到MMI線程的請求消息,會立即提取消息中的服務器地址和HTTP請求相關的參數,然后按照圖2所示的流程通過HTTP客戶端API層與遠端服務器進行交互;當收到HTTP客戶端API層的返回數據時,HTTP客戶端線程就會將這些數據以一定的組織形式,發送到MMI線程的消息隊列,然后重新進入侍候狀態;當MMI線程收到來自HTTP客戶端線程的消息時,該自動訪問過程結束。

3 擴展功能實現的介紹

3.1 在線電話簿

3.1.1 手動搜索功能

該功能通過MMI線程直接調用HTTP客戶端API實現,基本流程為:用戶輸入搜索條件;MMI線程調用HTTP客戶端API向遠端服務器發送HTTP搜索請求;如果搜索返回成功,則將搜索結果提供給用戶查看,否則,提示用戶錯誤信息。

3.1.2 自動查詢功能

該功能通過圖5所示的MMI與HTTP客戶端線程的同步機制實現,基本流程,如圖5所示:

3.2 在線天氣預報

在線天氣預報屬于MMI線程中的常駐功能,一旦MMI線程啟動,就會直接觸發它的運行.

檢查在線天氣功能是否開啟,如未開啟,則重置計時器,等待其超時再次檢測功能是否開啟,否則進入下一步;

向HTTP客戶端線程發送信息查詢請求;如客戶端線程成功返回響應消息,則進入下一步,否則重新進行上一步;

將HTTP客戶端線程返回的天氣信息顯示在LCD屏上;

重置定時器;

等待定時器超時,返回第一步再次更新天氣信息。

4.結論

本文針對當前VoIP終端特色功能擴展的需要,設計了一種輕型、高效的HTTP客戶端,并對該客戶端的設計架構和實現中遇到的關鍵問題進行了闡述。由于采用了相對開放的架構設計,實現了相互獨立的HTTP客戶端接口層、HTTP客戶端線程以及語法編解碼模塊,因此,除了已實現的在線號碼簿和在線天氣信息外,還可以基于該客戶端,進行其他類似的功能擴展。實際測試表明,該客戶端具有實時性高、穩定性強、系統資源開銷少等特點,達到了預期的設計指標。

[1]Wikipedia: Voice over IP[G/OL], http://en.wikipedia.org/wiki/Voice_over_IP, 2011.

[2]Neil Matthew, Richard Stones. Beginning Linux Progrmaming 4th Edition[M]. 北京,人民郵電出版社 ,2010.

[3]宋敬彬, 孫海濱. Linux網絡編程,[M]北京,清華大學出版社, 2010.

[4]謝希仁. 計算機網絡(第5版)[M].北京電子工業出版社,2008.

[5]許信順. 嵌入式 Linux應用編程[M], 北京,機械工業出版社, 2007.

[6]Internet Engineering Task Force, Hypertext Transfer Protocol - HTTP/1.1[S], http://tools.ietf.org/html/rfc2616,1999.

猜你喜歡
功能
拆解復雜功能
鐘表(2023年5期)2023-10-27 04:20:44
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
基層弄虛作假的“新功能取向”
當代陜西(2021年21期)2022-01-19 02:00:26
深刻理解功能關系
鉗把功能創新實踐應用
關于非首都功能疏解的幾點思考
基于PMC窗口功能實現設備同步刷刀功能
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 久久久久人妻一区精品色奶水| 综合色亚洲| 亚洲日本一本dvd高清| 四虎影视8848永久精品| 国产人成乱码视频免费观看| 国产电话自拍伊人| 香蕉综合在线视频91| 十八禁美女裸体网站| 国产99欧美精品久久精品久久| 午夜少妇精品视频小电影| 国产精品天干天干在线观看| 国产丝袜无码一区二区视频| 毛片在线播放a| 亚洲色图另类| 国产日韩丝袜一二三区| 四虎免费视频网站| 亚洲高清在线播放| 天天做天天爱夜夜爽毛片毛片| a亚洲视频| 三级毛片在线播放| 波多野结衣视频网站| 99在线观看国产| 亚洲国产精品一区二区第一页免 | 国产精品林美惠子在线观看| 亚洲欧美一区二区三区蜜芽| 亚洲天堂视频在线免费观看| 成人午夜视频免费看欧美| 国产精品密蕾丝视频| 久久黄色小视频| 亚洲自偷自拍另类小说| 日韩欧美中文亚洲高清在线| 久久人妻xunleige无码| 国产成人啪视频一区二区三区| 国产乱肥老妇精品视频| 国产美女91呻吟求| 国产主播喷水| 重口调教一区二区视频| 伊人久久久大香线蕉综合直播| 黑色丝袜高跟国产在线91| 国产资源免费观看| 国产99在线| 亚洲中文字幕在线观看| 国产精品一区二区国产主播| 无码精油按摩潮喷在线播放| 伊人激情久久综合中文字幕| 在线看片免费人成视久网下载| 91综合色区亚洲熟妇p| 91久久国产综合精品| 中文字幕亚洲另类天堂| 亚洲码在线中文在线观看| 色综合天天操| 国产成人超碰无码| 日本人又色又爽的视频| 97在线观看视频免费| 91精品国产一区| 嫩草国产在线| 欧美视频免费一区二区三区| 日本成人精品视频| 久久国产拍爱| 國產尤物AV尤物在線觀看| 国产精品尤物铁牛tv | 1024你懂的国产精品| 国产成人AV男人的天堂| 午夜一区二区三区| 精品少妇人妻一区二区| 在线精品自拍| 国产精品综合久久久| 久久频这里精品99香蕉久网址| 国产综合另类小说色区色噜噜| 91精选国产大片| 国产欧美精品一区二区| 国产精品熟女亚洲AV麻豆| 99国产精品国产高清一区二区| 国产黄网永久免费| 51国产偷自视频区视频手机观看| 午夜a视频| 91视频99| 精品国产aⅴ一区二区三区| 日韩麻豆小视频| av免费在线观看美女叉开腿| 国产综合在线观看视频| 久久99国产乱子伦精品免|