新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > VxWorks下基于緩沖隊列的網絡通信

        VxWorks下基于緩沖隊列的網絡通信

        作者: 時間:2010-04-09 來源:網絡 收藏
        具體表現為,消息初始為空,數據發送任務阻塞在消息上,網絡正常情況下,每有新的消息單元到達時,數據發送任務就將該消息單元指向的數據包立刻發送出去;如果某個時刻網絡受到外界環境的影響變地不穩定或發生短暫阻塞,數據包不能及時發出,該數據包就可緩存在 Buffer中,其地址信息緩存在消息中,而不會丟失,等網絡正常后再發送出去。隊列的模式如圖 3所示。根據待傳輸信息的緊急程度,不同的任務可以選擇 FIFO或優先級向緩存隊列中寫入消息單元。

        本文引用地址:http://www.104case.com/article/157520.htm


        實驗時,以一臺普通 PC機作為上位機服務器,采樣節點和服務器之間通過一個百兆的機相連。采樣節點的所有采集通道全開,均設為最大采樣率,服務器每隔 5秒鐘查詢一次節點狀態,此時數據傳輸率約為 65Mbit/s,系統連續運行 8小時。實驗結果顯示服務器收到的數據包數目和采樣節點發送的數據包數目相同,數據傳輸丟失率為 0.0%。

        4網絡監測原理

        當網絡發生中斷時,系統軟件應該能夠盡快發現網絡故障,并在網絡恢復后仍可正常運行,因此軟件應該具備網絡監控功能,實時監測網絡的連通性。監測網絡連通性的一個比較簡單的方法就是通過服務器向采樣節點不間斷發送 ICMP(Internet控制消息協議 )包,如果能收到回應則證明網絡連通,反之則表示網絡中斷。此法雖然簡單,但是當節點比較多時,大量的 ICMP數據包會占用 CPU資源,降低服務器的效率,故此法不可行。圖 4是我們設計的一個網絡監控原理圖。




        為避免影響到數據的實時傳輸,通信雙方各建立兩個 socket端口,一個作為數據通道專門用來傳遞數據信息,另一個用作監控通道,傳遞應答信號,監測網絡的連通性;監控通道負責管理和維護數據通道。節點和服務器端運行的監控任務都是無限循環任務,每若干秒運行一次。在每一個循環周期內,采樣節點都會向服務器發起一次連接,服務器端收到采樣節點的連接請求后,和其建立連接,然后向其發送信號指令。采樣節點收到信號指令后,向服務器發送應答信號,服務器若能在 T_wait時間內收到應答信號,則判定網絡通暢,否則認為網絡中斷。如果某時刻網絡出現斷線,那么重新建立連接后,服務器會向采樣節點發送重新連接指令,采樣節點收到重新連接指令后,會關閉原有的數據傳輸 socket,重新和服務器建立數據傳輸通道。


        實驗時,通過插拔網線模擬網絡的連通和斷線。結果表明,在系統進行數據傳輸時拔掉網線,若在 20秒內再接上,由于采樣節點具有一定的緩存能力,數據不會丟失,網絡仍可正常工作;若拔掉網線,超過 20秒之后再接上網線,采樣節點和服務器之間會重新建立連接,網絡仍可正常工作,但由于緩存隊列溢出,數據會發生丟失;若拔掉網線超過 30分鐘,采樣節點會判定網絡中斷、記錄故障并自動關閉系統,插上網線后,服務器通過網絡遠程啟動采樣節點,系統繼續正常工作。

        5總結

        利用 對多任務和網絡的良好支持,本文提出了一種隊列的帶網絡狀態監測功能的模式,目前已經在我們開發的分布式監控系統中得到應用。該模式使系統能夠應付一定的網絡故障,提高了系統的可靠性。該模式還可以方便地應用到其它嵌入式網絡開發中,具有廣泛的應用前景。本文作者創新點:本文提出的這種基于隊列的帶網絡狀態監測功能的網絡通信模式,充分地利用了 對多任務和網絡的良好支持,消息隊列不僅同步任務,還可作為緩存隊列用來緩存數據,使系統能夠應付一定的網絡波動;監控任務的工作模式使系統能夠快速發現網絡故障并做出響應,待網絡故障排除后仍可正常運行。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 乃东县| 乐亭县| 新竹县| 白山市| 江孜县| 宁津县| 应用必备| 安乡县| 贵州省| SHOW| 巴里| 浦城县| 宜都市| 汝南县| 马山县| 襄樊市| 东明县| 沁阳市| 瑞安市| 运城市| 嘉义县| 镇坪县| 天全县| 仪征市| 抚顺市| 庆城县| 微山县| 兴和县| 镇远县| 安泽县| 富顺县| 武乡县| 莱阳市| 葵青区| 肇州县| 闽清县| 潞西市| 富蕴县| 门源| 抚远县| 河南省|