一種向客戶端傳輸數(shù)據(jù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)傳輸,特別涉及一種向客戶端傳輸數(shù)據(jù)的方法。
【背景技術(shù)】
[0002]在基于GPRS的數(shù)據(jù)遠(yuǎn)程采集應(yīng)用中,諸如環(huán)境現(xiàn)場監(jiān)測系統(tǒng),負(fù)責(zé)遠(yuǎn)程采集監(jiān)測數(shù)據(jù)的節(jié)點由部署在監(jiān)測區(qū)域內(nèi)大量節(jié)點組成,通過無線通信方式形成的一個網(wǎng)絡(luò)系統(tǒng)。其數(shù)據(jù)傳輸協(xié)議的設(shè)計需要綜合考慮多種因素,盡可能降低傳輸開銷。遠(yuǎn)程采集數(shù)據(jù)一般通過GPRS網(wǎng)絡(luò)進(jìn)行傳輸。由于GPRS模塊單次入網(wǎng)時間長、功耗大,GPRS網(wǎng)絡(luò)不穩(wěn)定,常會出現(xiàn)數(shù)據(jù)丟包。對于電池供電的遠(yuǎn)程采集節(jié)點,進(jìn)行簡單的數(shù)據(jù)續(xù)傳保障可靠性,無疑會大大增加節(jié)點傳輸開銷。
[0003]因此,針對相關(guān)技術(shù)中所存在的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種向客戶端傳輸數(shù)據(jù)的方法,用于在現(xiàn)場監(jiān)測系統(tǒng)中將遠(yuǎn)程采集節(jié)點的數(shù)據(jù)傳送至用戶客戶端,包括:
[0005]所述遠(yuǎn)程采集節(jié)點以固定周期執(zhí)行數(shù)據(jù)采集,將采集到的數(shù)據(jù)向采集數(shù)據(jù)接收節(jié)點進(jìn)行單次傳輸,采集數(shù)據(jù)接收節(jié)點對各遠(yuǎn)程采集節(jié)點所采集到的數(shù)據(jù)進(jìn)行匯總,并通過UDP鏈路將數(shù)據(jù)上傳至數(shù)據(jù)服務(wù)器進(jìn)行被采集數(shù)據(jù)的暫存和備份,然后將采集到的數(shù)據(jù)發(fā)送給用戶的客戶端。
[0006]優(yōu)選地,在將采集到的數(shù)據(jù)向采集數(shù)據(jù)接收節(jié)點進(jìn)行單次傳輸?shù)牟襟E之前,該方法還包括:
[0007]在初始化階段,遠(yuǎn)程采集節(jié)點進(jìn)行編碼確定唯一 ID號,遠(yuǎn)程采集節(jié)點對待發(fā)送數(shù)據(jù)進(jìn)行預(yù)處理,將待發(fā)送大塊數(shù)據(jù)預(yù)分割成小塊數(shù)據(jù);為每小塊數(shù)據(jù)分配連續(xù)的報文序列號,在數(shù)據(jù)預(yù)處理流程中根據(jù)報文序列號大小決定報文發(fā)送順序;遠(yuǎn)程采集節(jié)點完成初始化后,向采集數(shù)據(jù)接收節(jié)點發(fā)送ID號和數(shù)據(jù)傳輸請求,遠(yuǎn)程采集節(jié)點發(fā)送數(shù)據(jù)傳輸請求后開始對信道進(jìn)行偵聽,直到收到采集數(shù)據(jù)接收節(jié)點回復(fù)的傳輸確認(rèn)信息幀或超過偵聽時間上限,當(dāng)超過偵聽時間后,遠(yuǎn)程采集節(jié)點重新發(fā)送有限次的連接建立請求;遠(yuǎn)程采集節(jié)點與采集數(shù)據(jù)接收節(jié)點在建立連接中,采集數(shù)據(jù)接收節(jié)點在傳輸確認(rèn)信息幀中報告上次通信過程中是否有數(shù)據(jù)傳輸丟失,如果存在數(shù)據(jù)丟失,遠(yuǎn)程采集節(jié)點需對數(shù)據(jù)進(jìn)行排序,進(jìn)行丟失數(shù)據(jù)續(xù)傳,若不存在數(shù)據(jù)丟失,遠(yuǎn)程采集節(jié)點直接建立連接;對于采集數(shù)據(jù)接收節(jié)點,建立連接過程還包括接受請求、連接確認(rèn)和連接建立,數(shù)據(jù)傳輸接收節(jié)點始終保持偵聽狀態(tài),一旦收到遠(yuǎn)程采集節(jié)點的數(shù)據(jù)傳輸請求后,解析數(shù)據(jù)傳輸請求確定遠(yuǎn)程采集節(jié)點ID號,并根據(jù)ID號查詢該遠(yuǎn)程采集節(jié)點是否有數(shù)據(jù)傳輸歷史記錄,如果是該遠(yuǎn)程采集節(jié)點第一次與采集數(shù)據(jù)接收節(jié)點通信,采集數(shù)據(jù)接收節(jié)點向該遠(yuǎn)程采集節(jié)點回發(fā)傳輸確認(rèn)信息幀,確認(rèn)數(shù)據(jù)傳輸請求,如果不是第一次通信,采集數(shù)據(jù)接收節(jié)點統(tǒng)計上一次數(shù)據(jù)傳輸過程中是否有數(shù)據(jù)丟失、傳輸錯誤,并將丟失數(shù)據(jù)的報文序列號回發(fā)該遠(yuǎn)程采集節(jié)點,采集數(shù)據(jù)接收節(jié)點收到遠(yuǎn)程采集節(jié)點的確認(rèn)幀后,同時進(jìn)入連接狀態(tài),等待遠(yuǎn)程采集節(jié)點傳輸后續(xù)數(shù)據(jù)。
[0008]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點:
[0009]本發(fā)明提出了一種遠(yuǎn)程采集網(wǎng)數(shù)據(jù)傳輸方法,實現(xiàn)大量遠(yuǎn)程采集節(jié)點數(shù)據(jù)在GPRS網(wǎng)絡(luò)不穩(wěn)定情況下與采集數(shù)據(jù)接收節(jié)點的低開銷可靠傳輸。
【附圖說明】
[0010]圖1是根據(jù)本發(fā)明實施例的向客戶端傳輸數(shù)據(jù)的方法的流程圖。
【具體實施方式】
[0011]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細(xì)描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
[0012]典型的遠(yuǎn)程采集節(jié)點以固定周期喚醒并執(zhí)行數(shù)據(jù)采集。以一天或者更長時間作為傳輸周期,將采集到的數(shù)據(jù)向采集數(shù)據(jù)接收節(jié)點進(jìn)行單次可靠傳輸。遠(yuǎn)程采集系統(tǒng)由大量遠(yuǎn)程采集節(jié)點組成,采集數(shù)據(jù)接收節(jié)點需對各遠(yuǎn)程采集節(jié)點采集到的數(shù)據(jù)進(jìn)行匯總,并通過UDP鏈路將數(shù)據(jù)上傳至數(shù)據(jù)服務(wù)器進(jìn)行被采集數(shù)據(jù)的暫存、備份,或直接將采集到的數(shù)據(jù)發(fā)送給每個用戶的客戶端。
[0013]由于GPRS網(wǎng)絡(luò)環(huán)境不穩(wěn)定,有時會出現(xiàn)網(wǎng)絡(luò)中斷或者數(shù)據(jù)丟包,制約了被采集數(shù)據(jù)向采集數(shù)據(jù)接收節(jié)點傳輸?shù)臏?zhǔn)確性。針對遠(yuǎn)程采集網(wǎng)數(shù)據(jù)傳輸系統(tǒng)中遠(yuǎn)程采集節(jié)點與采集數(shù)據(jù)接收節(jié)點的數(shù)據(jù)傳輸需求,提出了遠(yuǎn)程采集網(wǎng)數(shù)據(jù)傳輸方法,實現(xiàn)大量遠(yuǎn)程采集節(jié)點數(shù)據(jù)在GPRS網(wǎng)絡(luò)不穩(wěn)定情況下與采集數(shù)據(jù)接收節(jié)點的低開銷可靠傳輸。圖1是根據(jù)本發(fā)明實施例的向客戶端傳輸數(shù)據(jù)的方法流程圖。
[0014]在數(shù)據(jù)傳輸連接建立階段,遠(yuǎn)程采集節(jié)點與采集數(shù)據(jù)接收節(jié)點相互協(xié)調(diào),完成通信連接的建立。對于遠(yuǎn)程采集節(jié)點,建立連接的步驟可細(xì)分為初始化、連接發(fā)起和連接建立3部分。
[0015]在初始化階段,遠(yuǎn)程采集節(jié)點進(jìn)行編碼確定唯一 ID號。遠(yuǎn)程采集節(jié)點還需對待發(fā)送數(shù)據(jù)進(jìn)行預(yù)處理,將待發(fā)送大塊數(shù)據(jù)預(yù)分割成小塊數(shù)據(jù)。為每小塊數(shù)據(jù)分配連續(xù)的報文序列號。數(shù)據(jù)傳輸方法協(xié)議數(shù)據(jù)預(yù)處理流程中,報文序列號大小決定報文發(fā)送順序。
[0016]遠(yuǎn)程采集節(jié)點完成初始化后,向采集數(shù)據(jù)接收節(jié)點發(fā)送ID號和數(shù)據(jù)傳輸請求。遠(yuǎn)程采集節(jié)點發(fā)送數(shù)據(jù)傳輸請求后開始對信道進(jìn)行偵聽,直到收到采集數(shù)據(jù)接收節(jié)點回復(fù)的傳輸確認(rèn)信息幀或超過偵聽時間上限,設(shè)置偵聽時間上限的目的在于防止遠(yuǎn)程采集節(jié)點無限的對信道進(jìn)行偵聽,從而浪費信道資源、過多消耗遠(yuǎn)程采集節(jié)點電量。超過偵聽時間后,遠(yuǎn)程采集節(jié)點可根據(jù)連接建立的迫切性重新發(fā)送有限次的連接建立請求。
[0017]遠(yuǎn)程采集節(jié)點與采集數(shù)據(jù)接收節(jié)點在建立連接中,采集數(shù)據(jù)接收節(jié)點“捎帶式”的在傳輸確認(rèn)信息幀中報告上次通信過程中是否有數(shù)據(jù)傳輸丟失。如果存在數(shù)據(jù)丟失,遠(yuǎn)程采集節(jié)點需對數(shù)據(jù)進(jìn)行排序,優(yōu)先進(jìn)行丟失數(shù)據(jù)選擇性續(xù)傳。若不存在數(shù)據(jù)丟失,遠(yuǎn)程采集節(jié)點直接建立連接。
[0018]對于采集數(shù)據(jù)接收節(jié)點,建立連接的步驟可細(xì)分為接受請求、連接確認(rèn)和連接建立3部分。數(shù)據(jù)傳輸接收節(jié)點始終保持偵聽狀態(tài),一旦收到遠(yuǎn)程采集節(jié)點的數(shù)據(jù)傳輸請求后,解析數(shù)據(jù)傳輸請求確定遠(yuǎn)程采集節(jié)點ID號,并根據(jù)ID號查詢該遠(yuǎn)程采集節(jié)點是否有數(shù)據(jù)傳輸歷史記錄。如果是該遠(yuǎn)程采集節(jié)點第一次與采集數(shù)據(jù)接收節(jié)點通信,采集數(shù)據(jù)接收節(jié)點向該遠(yuǎn)程采集節(jié)點回發(fā)傳輸確認(rèn)信息幀,確認(rèn)數(shù)據(jù)傳輸請求。如果不是第一次通信,采集數(shù)據(jù)接收節(jié)點統(tǒng)計上一次數(shù)據(jù)傳輸過程中是否有數(shù)據(jù)丟失、傳輸錯誤,并將丟失數(shù)據(jù)的報文序列號回發(fā)該遠(yuǎn)程采集節(jié)點。采集數(shù)據(jù)接收節(jié)點收到遠(yuǎn)程采集節(jié)點的確認(rèn)幀后,同時進(jìn)入連接狀態(tài),等待遠(yuǎn)程采集節(jié)點傳輸后續(xù)數(shù)據(jù)。