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

工業手持終端的通信設計

2015-12-20 11:06:50王銀俞建定王新彪萬旭東
移動通信 2015年7期
關鍵詞:模型

王銀,俞建定,王新彪,萬旭東

(寧波大學信息科學與工程學院,浙江 寧波 315211)

工業手持終端的通信設計

王銀,俞建定,王新彪,萬旭東

(寧波大學信息科學與工程學院,浙江 寧波 315211)

該通信方案以工業手持終端現場應用為背景,針對傳統以太網在工業通信中實時性差的問題,提出了一種發送心跳包,建立socket長連接的方法,由此來減少通信過程中頻繁建立和關閉連接所消耗的時間。運用XMPP協議實現輕量級、簡單實用的消息推送組件,可以進行服務端消息推送從而代替了傳統的客戶端輪詢機制,縮短了響應時間,提高了整個系統的實時性。

手持終端 socket 心跳包 消息推送 實時性

1 引言

近年來,由于以太網開放程度高、數據吞吐量大、通信速率快等特點,使其成為各行各業最受歡迎的通信網絡之一。它不僅壟斷了辦公自動化領域的網絡通信,而且廣泛應用于工業控制領域資源管理等中上層通信網絡,并有向下應用于工業控制現場的趨勢。實時性差是它應用于工業現場的一大障礙。為解決上述問題,人們提出了很多方法,如在原有以太網基礎上修改開發新的實時通信協議,但這又面臨著開發難度較高且周期漫長的問題;又如對原有硬件進行改動等方法,但這些又無疑加大了工業的應用成本。為此,本文提出了一種基于socket的局域網實時通信的設計和實現方法,并深入探討了socket的工作原理和通信方式。而且結合實際應用需要,詳細闡述了通過心跳機制和消息推送的方法來提高工業終端實時通信的原理及其實現流程。

2 Socket的工作原理和運行過程

Socket又稱套接字,是對傳輸層協議(UDP和TCP)的一種封裝。應用層的程序通過傳輸層協議進行數據的傳輸,而socket的作用是將應用層的程序添加到網絡中,然后和其他處于同網絡中的應用層程序進行通信。簡單來說,socket是傳輸層供給應用層的函數調用接口,它提供了程序內部與外界通信的端口并為通信的雙方提供了數據傳輸的通道。Socket的工作原理如圖1所示:

圖1 Socket的工作原理

2.1 Socket通信方式

根據不同的通信協議,socket共有3種常見的通信方式:原始套接字(sock_ram)、數據報套接字(sock_dgram)、流套接字(sock_stream)。流套接字是面向有連接的傳輸協議,能提供可靠的數據傳輸,但是頻繁的數據傳輸,會多次建立、關閉連接,消耗的時間久,影響傳輸的實時性;數據報套接字是無連接的傳輸協議,數據傳輸速度快,但是不能保證數據傳輸的準確性;原始套接字能直接訪問底層協議,主要應用于一些協議的開發,功能雖然強大但使用較為不方便。

考慮到手持終端主要應用于工控領域,應該在保證數據準確性的前提下,再去考慮數據傳輸的實時性。因此選擇面向有連接的能提供可靠數據傳輸的TCP協議來進行傳輸。TCP連接通信程序設計框圖如圖2所示。

2.2 TCP連接傳輸模型

圖2 TCP連接通信程序設計框圖

運用TCP協議,正常情況下的數據包傳輸過程為:建立連接→數據傳輸→關閉連接→建立連接→數據傳輸→關閉連接→……→關閉連接,傳輸模型如圖3所示:

圖3 TCP傳輸模型

由圖3可以看出,每次數據傳輸,TCP協議都要建立連接和關閉連接。每次TCP建立連接需要3次握手才能建立成功,對實時性要求高的場合,這種傳輸方式太浪費時間。若一次連接建立成功后,每次數據傳輸完成都不再關閉連接,下次若有數據包需要發送時,則不用再建立和關閉連接,而是直接進行數據包發送。這樣就可以避免中間環節頻繁建立和關閉連接消耗大量時間,傳輸速度因此會提高很多,實時性得到很大改善。

根據上述分析,若建立這樣的連接后,不主動人為關閉它,則認為如果沒有特殊情況影響,其會一直處于連接狀態。但是在實際應用中,若服務器與客戶端在一段時間內沒有傳輸數據時,其連接可能會變成“休眠”狀態,甚至斷開;其次,中間節點若出現什么故障也是難以知道的,造成用戶不能及時地發現和解決問題。若出現上述兩種狀況,用戶的狀態就可能得不到實時有效的更新,造成的損失也是無法預知的。因此,如果想維護、檢測連接,則需要在服務器和客戶端制定一個通訊協議。每隔一定時間,若沒有數據傳輸,則由一方發起,向對方發送數據包。若對方收到這個數據包,則按指定好的通訊協議回一個數據包;若發起方沒有收到回復,則判斷網絡出現問題,服務器可及時地斷開連接,客戶端也可以及時得到重連的機會,這樣的協議類似于心跳機制。

3 心跳機制

3.1 心跳原理分析

心跳模型旨在讓客戶端和服務器獲取對方的連接狀態,以保證連接正常,順利進行通信服務。

常規的心跳機制有2個特征。特征一,它像心跳一樣每隔固定時間發一次,服務器收到心跳包后,返回給客戶端一個數據包,客戶端若在規定的時間內沒有收到該心跳數據包,則判斷為連接斷開,通信異常。特征二,心跳協議數據包的主動發送方既可以是服務器,也可以是客戶端,但考慮到易操作性和效率,選擇客戶端作為主動發送方,給服務器發送心跳包。

通過上述了解可知,心跳旨在維護連接、檢測連接狀態。在傳輸數據很頻繁的時間段,這種心跳機制(特征一)就沒有必要了,而且還會占用帶寬,降低網絡通信效率。因此,本文將在此心跳機制的基礎上,修改原有心跳機制的弊端。若一段時間內有數據傳輸時,就取消心跳包的發送,不再像原有的機制那樣每隔固定時間發送。下面將詳細介紹具體的實現過程。

3.2 心跳包模型實現

出于上述這些因素的考慮,可以設計如下的心跳機制。當本次數據發送完畢后,立刻啟動一個超時定時器,若在定時時間到期之前有數據傳輸時,則關閉超時定時器,不再額外發送心跳數據包;如果在定時時間到期之前沒有發生有效的數據傳輸,客戶端發送一個心跳包給服務器,此時根據網路的不同狀況,會出現網絡正常連接、網絡異常連接兩種情況。如果網絡正常連接,客戶端向服務端發起心跳包,服務端收到心跳包后立刻向客戶端發出ACK心跳回復包。客戶端收到ACK心跳回復包后,超時定時器清零重新開始計時,如果總線還是處于空閑狀態,將進行下一次的循環。如果網絡連接異常,客戶端向服務端發起心跳包,在定時時間內服務器端沒收到心跳包,客戶端再次發出ACK心跳包,客戶端連續發送2次心跳包后服務端若還沒收到ACK心跳包,則給出連接中斷信息并進行報警提示,進行重新連接。

在上述內容的基礎上,心跳程序模型設計可按圖4所示的流程實現:

圖4 心跳模型程序設計

3.3 心跳機制下TCP連接傳輸模型

實現上述心跳模型后,在超時定時器的規定時間段內沒有數據通信時,定時發送數據包(心跳),以維持連接狀態。數據傳輸的過程如下:建立連接→數據傳輸→保持連接(心跳)→數據傳輸→保持連接(心跳)→數據傳輸→……→關閉連接,TCP簡化傳輸模型如圖5所示:

圖5 TCP簡化傳輸模型

通過和圖3比較,此連接一旦建立,中間就不再關閉。再次傳輸時,不用建立TCP連接,也就不需要握手過程,避免了頻繁建立連接和關閉連接消耗時間的問題,加快了后續請求的響應時間,提高了系統的實時性。

4 消息推送分析

當前開發的大部分客戶端應用,基本上都需要和服務器進行交互,即上傳數據到服務器的同時從服務器上獲取數據。一般情況下,客戶端與服務器之間進行通訊,客戶端是主動的,服務器不能主動向客戶端發消息,只能被動地等待客戶端來取消息。實時通信已經變成了偽實時,從數據的發送和接收間隔來看,會有很大程度的延遲,這種方式使數據傳輸失去了它的實時性。為了消除以上傳輸方式的弊端,讓客戶端及時收到服務端所發送的數據,通信方案有:一是使用Pull(拉)的常規方式,客戶端定時向服務器發送查詢命令數據,看是否有更新的信息出現,服務器有變化或者有通知時,客戶端把相應消息取回;二是使用數據推送(Push)的方法,若服務器端有新的數據更新,就主動推送給客戶端,這樣客戶端就能自動地接收到消息。以上2種機制和C語言中的輪詢和中斷類似,顯而易見Push方式的推送比Pull方式的輪詢更優越,效率更高。

4.1 消息推送解決方案

目前推送方案有很多,但是針對具體的實際應用,面臨的問題還很多。比如,谷歌推出的C2DM云端推送方案,它提供服務器向應用程序發送數據的服務,該服務可以讓移動客戶端直接與服務器進行通信,客戶端能很快地從服務器得到更新的數據和消息通知。但該方案存在的主要問題是C2DM需要應用谷歌公司的服務器,涉及到安全性問題,所以不可用。其次,國內也有一些第三方推送平臺可供使用,但是涉及到收費問題、保密問題、服務質量問題、擴展問題等,不得不使我們望而卻步。因此,我們針對實際的應用環境,提出了自己的方案:基于可擴展通訊和表示協議(XMPP)來開發定制自己的數據推送機制。

XMPP是在可擴展標記語言的協議基礎上開發出來的,它繼承了XML環境中靈活的發展性,具有超強的可擴展性。而且,XMPP包含了針對服務器端的軟件協議,使之能與其它客戶端進行通話,這使得開發者更容易開發建立客戶應用程序或給一個系統添加新的功能,用于即時通訊(IM)以及在線探測。

利用XMPP協議的這些特性,設計了一個輕量級、簡單實用的消息推送組件。原理如下:從一個客戶端到另一個客戶端的所有消息和數據都要通過XMPP服務器,在客戶端連接服務器時,服務器則運用自身的目標機注冊信息系統對其進行注冊認證;在數據傳輸過程中客戶端指定目標地址后,服務器根據指定的目標地址在注冊信息系統查找到目標機信息,然后把該目標機狀態信息通知給即將發送數據的客戶端;判斷連接并進行相互認證后,若連接正常,客戶端之間就可以進行數據交互,若連接失敗,則進行提示,不再發送數據,重新認證連接正常后再發送,這樣既能保證數據不丟失,又不至于發錯數據。

消息推送組件由服務器部分和客戶端部分組成,每一部分都由XMPP協議組件和外部接口組件構成。XMPP協議組件負責服務器和客戶端間的連接管理、消息通訊。外部接口組件負責接收應用系統、客戶端應用的命令,向應用系統發送接收到的通知消息。消息推送設計與實現原理模型如圖6所示:

圖6 消息推送設計與實現原理模型

此消息推送組件在服務器端具備消息存儲、消息重發等功能。在客戶端部分具備斷線重連、收到確認、閱讀確認、消息發送、命令執行等功能,確保消息能夠推送到客戶端,同時也保證客戶端能夠收到并閱讀消息。客戶端應用和消息推送組件完全分離,通過接口相互調用,實現模塊應用的最優化,系統集成簡單,無需復雜的設置。

5 結束語

本文針對工業移動終端的應用背景,系統地分析了socket通信中的一些特性。提出了一種用于維護連接的心跳機制,并運用XMPP協議實現了一種輕量級服務器和客戶端推送模型。詳細介紹了設計原理和具體實現流程。運用上述2種方案,系統在數據傳輸時,客戶端給服務器發送數據,服務器給客戶端推送數據,可實時收發信息。當長時間沒有數據通信時,服務器和客戶端會發送保持連接的心跳數據包,同時避免了“假在線”或連接“休眠”狀態并能及時更新用戶狀態。

[1] 陳磊,馮冬芹,金建祥. 以太網在工業應用中的實時特性研究[J]. 浙江大學學報, 2004,38(6): 670-675.

[2] 羅湘平. 基于工業以太網的智能控制器設計[D]. 大連:大連海事大學, 2011.

[3] 李慧,劉星橋,李景,等. 基于物聯網Android平臺的水產養殖遠程監控系統[J]. 農業工程學報, 2013(13): 175-181.

[4] 宋寶,姚軍,楊勇泉. 數控機床遠程監控平臺開發和實現[J]. 組合機床與自動化加工技術, 2012(12): 79-81.

[5] 梁田. 融合移動支付平臺中前置系統的設計與實現[D].北京: 北京郵電大學, 2013.

[6] 王浩亮,白晨明. 基于一卡通系統的校安平臺建設[J]. 數字技術與應用, 2013(6): 114-114.

[7] 龐國明. Android推送服務的應用開發[J]. 電腦編程技巧與維護, 2013(19): 51-55.

[8] 楊杰. 基于Android平臺的校園新聞客戶端的設計與研發[J]. 現代計算機, 2013(7): 64-88.

[9] 于少山,卡米力,毛依丁. 基于XML的即時通信系統的研究與實現[J]. 重慶郵電大學學報: 自然科學版, 2007(B06): 59-61.★

王銀:碩士就讀于寧波大學,研究方向為移動通信在嵌入式系統的應用、現場總線通信。

俞建定:碩士研究生導師,寧波大學副教授,主要研究方向為嵌入式系統應用、現場總線通信研究應用、移動設備的技術研究和產品開發。

王新彪:碩士就讀于寧波大學,研究方向為移動通信在嵌入式系統的應用、現場總線通信。

Communication Design of Handheld Terminal in Industrial Application

WANG Yin, YU Jian-ding, WANG Xin-biao, WAN Xu-dong
(Faculty of Electrical Engineering and Computer Science, Ningbo University, Ningbo 315211, China)

On the background of handheld terminal fi eld application in industrial application, a method in which heartbeat packet can be sent and socket long connection can be established was proposed according to the bad real-time of traditional Ethernet in industrial communication. It can reduce the time consumed by frequently establishing and closing connections. XMPP protocol is adopted to realize the lightweight, easily practical message push component. Because message can be pushed to server by means of the protocol, the traditional polling mechanism in server is eliminated. The proposed method can reduce response time and enhance the system real-time.

handheld terminal socket heartbeat packet message push real-time

10.3969/j.issn.1006-1010.2015.07.014

TP393

A

1006-1010(2015)07-0066-05

王銀,俞建定,王新彪,等. 工業手持終端的通信設計[J]. 移動通信, 2015,39(7): 66-70.

2014-12-30

責任編輯:劉妙 liumiao@mbcom.cn

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 伊人久综合| 成人国产三级在线播放| 亚洲国内精品自在自线官| 素人激情视频福利| 福利国产在线| 色哟哟国产精品一区二区| 人妻21p大胆| 国产丝袜无码一区二区视频| a色毛片免费视频| 熟女成人国产精品视频| 女人18毛片久久| 无码精油按摩潮喷在线播放| 久久精品亚洲热综合一区二区| 欧美一级99在线观看国产| 国产成人亚洲精品蜜芽影院| 看你懂的巨臀中文字幕一区二区| 青青青国产免费线在| a毛片基地免费大全| 国产亚洲精久久久久久无码AV| 国产爽妇精品| 亚洲av综合网| 国产精品林美惠子在线观看| 欧洲日本亚洲中文字幕| 色婷婷狠狠干| 亚洲AV一二三区无码AV蜜桃| 欧美日韩国产在线播放| 国内熟女少妇一线天| 欧美影院久久| 99视频在线精品免费观看6| 自拍欧美亚洲| 欧美国产日韩在线播放| 国产精品视频第一专区| 国产成人1024精品下载| 无码丝袜人妻| 久久精品娱乐亚洲领先| 国产自在自线午夜精品视频| 国产精品亚洲专区一区| 国内精品小视频在线| 亚洲视频在线观看免费视频| 91精品视频网站| 精品视频在线一区| 久久综合一个色综合网| 1024国产在线| 污污网站在线观看| 狠狠ⅴ日韩v欧美v天堂| 国产www网站| 亚洲av日韩综合一区尤物| 自拍偷拍欧美| 久久9966精品国产免费| 激情無極限的亚洲一区免费| 亚洲成人免费在线| 日本午夜三级| 日韩在线欧美在线| 又大又硬又爽免费视频| 91久久偷偷做嫩草影院电| 亚洲天堂视频网站| 亚洲欧美一区二区三区蜜芽| 青草视频在线观看国产| 高清无码手机在线观看| 国产在线观看第二页| 国内熟女少妇一线天| 综合五月天网| 无码免费的亚洲视频| 国产福利大秀91| 国产电话自拍伊人| 国产福利微拍精品一区二区| 日日碰狠狠添天天爽| 国产亚洲男人的天堂在线观看| 日本免费高清一区| 伊人狠狠丁香婷婷综合色| 四虎成人在线视频| 国产男人的天堂| 国产经典在线观看一区| 国模私拍一区二区| 国产91成人| 亚洲国产天堂久久综合| 国产成人亚洲精品无码电影| 亚洲天堂在线视频| 亚洲精品成人福利在线电影| 日韩av电影一区二区三区四区| 亚洲视频a| 国产成人综合欧美精品久久|