亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法與流程

文檔序號:11524075閱讀:449來源:國知局
一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法與流程

本發(fā)明涉及一種數(shù)據(jù)轉(zhuǎn)發(fā)方法,特別是一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法。



背景技術(shù):

在當(dāng)前,物聯(lián)網(wǎng)技術(shù)已經(jīng)廣泛的應(yīng)用到環(huán)保、消防、交通、測繪等多個(gè)領(lǐng)域。在這些應(yīng)用中,傳感器數(shù)據(jù)的傳輸起到了至關(guān)重要的作用。傳感器數(shù)據(jù)一般通過無線網(wǎng)絡(luò)發(fā)送到主機(jī)的tcp端口,并以固定的協(xié)議來規(guī)范傳感器與主機(jī)之間的信息傳輸。

目前,在多種應(yīng)用場景下需要實(shí)現(xiàn)數(shù)據(jù)的轉(zhuǎn)發(fā)。其中包括:

1)數(shù)據(jù)協(xié)議的轉(zhuǎn)換

基于傳感器的數(shù)據(jù)管理系統(tǒng)往往需要遵循某種數(shù)據(jù)傳輸協(xié)議,在某些應(yīng)用場景下,需要實(shí)現(xiàn)新舊系統(tǒng)的兼容。這種情況下,新舊系統(tǒng)往往存在不同的通信協(xié)議。這就需要首先將舊系統(tǒng)中的數(shù)據(jù)進(jìn)行“抓取”,在此基礎(chǔ)上進(jìn)行協(xié)議轉(zhuǎn)換,并向新系統(tǒng)進(jìn)行轉(zhuǎn)發(fā)。

2)系統(tǒng)測試時(shí)對真實(shí)數(shù)據(jù)的模擬

在對某些軟件系統(tǒng)進(jìn)行升級的初期,為了維護(hù)數(shù)據(jù)的穩(wěn)定性,需要新舊系統(tǒng)同時(shí)運(yùn)行。在這種情況下,新系統(tǒng)尚需要進(jìn)一步測試,因此,真實(shí)的傳感器數(shù)據(jù)往往需要用于舊系統(tǒng)的運(yùn)行,而對于新系統(tǒng)來說,只能采用模擬數(shù)據(jù)對其進(jìn)行測試。這就需要對真實(shí)的傳感器數(shù)據(jù)進(jìn)行處理,在發(fā)往舊系統(tǒng)的同時(shí),鏡像一份數(shù)據(jù)發(fā)往新系統(tǒng),以最大限度的對真實(shí)環(huán)境進(jìn)行模擬,實(shí)現(xiàn)軟件的模擬測試。

上述兩種情形都需要涉及以下技術(shù)問題:1)大規(guī)模傳感器數(shù)據(jù)的“抓取”。2)傳感器數(shù)據(jù)在經(jīng)過處理之后,向多個(gè)終端的實(shí)時(shí)轉(zhuǎn)發(fā)?,F(xiàn)有技術(shù)中并沒有相關(guān)大規(guī)模傳感器數(shù)據(jù)轉(zhuǎn)發(fā)方法的記載,因此迫切需要一種能夠大規(guī)模傳感器數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)的方法解決上述問題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問題是提供一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法,實(shí)現(xiàn)大規(guī)模傳感器數(shù)據(jù)的抓取并向多個(gè)遠(yuǎn)程主機(jī)進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。

為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:

一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法,其特征在于包含以下步驟:

步驟一:初始化系統(tǒng)環(huán)境;

步驟二:初始化類型為nioeventloopgroup的線程組clientloopgroup,啟動(dòng)類型為bootstrap的數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程引導(dǎo)器并進(jìn)行相關(guān)設(shè)置;

步驟三:構(gòu)建一個(gè)用于i/o事件處理的內(nèi)隱類,并將其掛接到數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程的主通道內(nèi);

步驟四:利用數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程引導(dǎo)器,向接收轉(zhuǎn)發(fā)數(shù)據(jù)的n個(gè)遠(yuǎn)程主機(jī)進(jìn)行預(yù)連接,并將生成的連接通道保存在類型為arraylist的通道隊(duì)列queue中;

步驟五:選取指定的網(wǎng)卡設(shè)備對象,并初始化一個(gè)類型為jpcapcaptor的對象jpcap與選定的網(wǎng)卡設(shè)備對象關(guān)聯(lián),等待從該設(shè)備中抓取數(shù)據(jù)包;

步驟六:調(diào)用jpcap對象的looppacket方法,循環(huán)的從網(wǎng)卡中抓取數(shù)據(jù)包packet,并進(jìn)行解析與轉(zhuǎn)發(fā)處理。

進(jìn)一步地,所述步驟一中,系統(tǒng)環(huán)境的設(shè)置包括netty程序包和jpcap程序包的加載。

進(jìn)一步地,所述步驟二中,相關(guān)設(shè)置具體包含,

2.1將線程組clientloopgroup與數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程引導(dǎo)器進(jìn)行關(guān)聯(lián);

2.2設(shè)置clientloopgroup的通道類型為niosocketchannel;

2.3設(shè)置參數(shù)so_keepalive,tcp_nodelay的值為true。

進(jìn)一步地,所述步驟三中,內(nèi)隱類的構(gòu)造方法為,繼承類型為channelinitializer<socketchannel>的類,并重載其方法initchannel,在該方法中對所在通道添加類型為channelinboundhandleradapter的攔截器。

進(jìn)一步地,所述步驟四中通道隊(duì)列queue所存儲(chǔ)的對象為通道對象。

進(jìn)一步地,所述步驟四中,根據(jù)實(shí)際需要連接的主機(jī)設(shè)置預(yù)連接的通道。

進(jìn)一步地,所述步驟六中,對數(shù)據(jù)包packet解析的具體方法包含,

6.1將該數(shù)據(jù)包強(qiáng)制類型轉(zhuǎn)換為tcppacket類型的對象p;

6.2獲取該包的端口信息,若是發(fā)向指定端口的包,且包大小不為零,則轉(zhuǎn)步驟c;否則丟棄該包;

6.3將包p中的數(shù)據(jù)取出,并加載到類型為bytebuf的對象bytebuffer中;

6.4獲取queue中所保存的所有通道,將bytebuffer對象在通道中進(jìn)行發(fā)送。

本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn)和效果:

1、實(shí)現(xiàn)了大規(guī)模傳感器數(shù)據(jù)的“抓取”;

2、實(shí)現(xiàn)了傳感器數(shù)據(jù)在經(jīng)過處理之后,向多個(gè)終端的實(shí)時(shí)轉(zhuǎn)發(fā);

3、支持多臺(tái)遠(yuǎn)程主機(jī)的并發(fā)通信,將基于本說明書方法所構(gòu)建的系統(tǒng)部署在一臺(tái)普通服務(wù)器上時(shí),可支持十萬級別的遠(yuǎn)程主機(jī)連接。

附圖說明

圖1是本發(fā)明的一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法的數(shù)據(jù)轉(zhuǎn)發(fā)框架圖。

圖2是本發(fā)明的一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法的流程圖。

具體實(shí)施方式

下面結(jié)合附圖并通過實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)說明,以下實(shí)施例是對本發(fā)明的解釋而本發(fā)明并不局限于以下實(shí)施例。

如圖所示,本發(fā)明的一種大規(guī)模傳感器數(shù)據(jù)的實(shí)時(shí)轉(zhuǎn)發(fā)方法,其特征在于包含以下步驟:

步驟一:初始化系統(tǒng)環(huán)境,系統(tǒng)環(huán)境的設(shè)置包括netty程序包和jpcap程序包的加載。

步驟二:初始化類型為nioeventloopgroup的線程組clientloopgroup,啟動(dòng)類型為bootstrap的數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程引導(dǎo)器并進(jìn)行相關(guān)設(shè)置。

相關(guān)設(shè)置具體包含,

2.1將線程組clientloopgroup與數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程引導(dǎo)器進(jìn)行關(guān)聯(lián);

2.2設(shè)置clientloopgroup的通道類型為niosocketchannel;

2.3設(shè)置參數(shù)so_keepalive,tcp_nodelay的值為true。

步驟三:構(gòu)建一個(gè)用于i/o事件處理的內(nèi)隱類,并將其掛接到數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程的主通道內(nèi)。

內(nèi)隱類的構(gòu)造方法為,繼承類型為channelinitializer<socketchannel>的類,并重載其方法initchannel,在該方法中對所在通道添加類型為channelinboundhandleradapter的攔截器。

步驟四:利用數(shù)據(jù)轉(zhuǎn)發(fā)器進(jìn)程引導(dǎo)器,向接收轉(zhuǎn)發(fā)數(shù)據(jù)的n個(gè)遠(yuǎn)程主機(jī)進(jìn)行預(yù)連接,并將生成的連接通道保存在類型為arraylist的通道隊(duì)列queue中;通道隊(duì)列queue所存儲(chǔ)的對象為通道對象;可以根據(jù)實(shí)際需要連接的主機(jī)設(shè)置預(yù)連接的通道。

其中,步驟二到步驟四的相關(guān)代碼為,

步驟五:選取指定的網(wǎng)卡設(shè)備對象,并初始化一個(gè)類型為jpcapcaptor的對象jpcap與選定的網(wǎng)卡設(shè)備對象關(guān)聯(lián),等待從該設(shè)備中抓取數(shù)據(jù)包;

步驟五的相關(guān)代碼為:

步驟六:調(diào)用jpcap對象的looppacket方法,循環(huán)的從網(wǎng)卡中抓取數(shù)據(jù)包packet,并進(jìn)行解析與轉(zhuǎn)發(fā)處理。

對數(shù)據(jù)包packet解析的具體方法包含,

6.1將該數(shù)據(jù)包強(qiáng)制類型轉(zhuǎn)換為tcppacket類型的對象p;

6.2獲取該包的端口信息,若是發(fā)向指定端口的包,且包大小不為零,則轉(zhuǎn)步驟c;否則丟棄該包;

6.3將包p中的數(shù)據(jù)取出,并加載到類型為bytebuf的對象bytebuffer中;

6.4獲取queue中所保存的所有通道,將bytebuffer對象在通道中進(jìn)行發(fā)送。

步驟六的相關(guān)代碼為:

本說明書中所描述內(nèi)容適合基于本框架的數(shù)據(jù)轉(zhuǎn)發(fā)與透傳,相關(guān)技術(shù)人員可以根據(jù)具體應(yīng)用場景來進(jìn)行修改。若為數(shù)據(jù)透傳,則buildbuf函數(shù)可將數(shù)據(jù)原樣轉(zhuǎn)發(fā),若為協(xié)議轉(zhuǎn)換后的數(shù)據(jù)轉(zhuǎn)發(fā),則可在buildbuf函數(shù)中編寫協(xié)議轉(zhuǎn)換的具體代碼。

本說明書中的方法支持多臺(tái)遠(yuǎn)程主機(jī)的并發(fā)通信,將基于本說明書方法所構(gòu)建的系統(tǒng)部署在一臺(tái)普通服務(wù)器上時(shí),可支持十萬級別的遠(yuǎn)程主機(jī)連接。

本說明書中所描述的以上內(nèi)容僅僅是對本發(fā)明所作的舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對所描述的具體實(shí)施例做各種修改或補(bǔ)充或采用類似的方式替代,只要不偏離本發(fā)明說明書的內(nèi)容或者超越本權(quán)利要求書所定義的范圍,均應(yīng)屬于本發(fā)明的保護(hù)范圍。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1