一種監(jiān)控環(huán)境下存儲(chǔ)、讀取數(shù)據(jù)包的方法及對(duì)應(yīng)的裝置制造方法
【專利摘要】本發(fā)明公開了一種監(jiān)控環(huán)境下存儲(chǔ)、讀取數(shù)據(jù)包的方法及對(duì)應(yīng)裝置,包括:接收數(shù)據(jù)包,獲取數(shù)據(jù)包的監(jiān)聽時(shí)刻,對(duì)數(shù)據(jù)包解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與所述監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,為快速讀取指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包提供了準(zhǔn)確查詢信息。另外,由于文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,其中地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng),因此,可以直接讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址,快速?gòu)乃鰯?shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
【專利說明】—種監(jiān)控環(huán)境下存儲(chǔ)、讀取數(shù)據(jù)包的方法及對(duì)應(yīng)的裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)服務(wù)監(jiān)控領(lǐng)域,特別涉及一種監(jiān)控環(huán)境下存儲(chǔ)、讀取數(shù)據(jù)包的方法及對(duì)應(yīng)的裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,基于網(wǎng)絡(luò)提供的服務(wù)也多種多樣。為了保證服務(wù)的穩(wěn)定,通常會(huì)對(duì)所提供的服務(wù)的網(wǎng)絡(luò)狀態(tài)進(jìn)行監(jiān)聽,并將監(jiān)聽所接收的數(shù)據(jù)包寫入監(jiān)聽文件。這樣,在需要對(duì)服務(wù)的網(wǎng)絡(luò)狀態(tài)進(jìn)行分析時(shí),可以從監(jiān)聽文件中讀取出之前接收的數(shù)據(jù)包進(jìn)行相應(yīng)分析。
[0003]在將監(jiān)聽所接收的數(shù)據(jù)包寫入監(jiān)聽文件時(shí),由于這些數(shù)據(jù)包通常為數(shù)據(jù)結(jié)構(gòu)完整,但大小不一致的非規(guī)則數(shù)據(jù)包,為了后續(xù)在讀取數(shù)據(jù)包時(shí)能夠準(zhǔn)確定位,在數(shù)據(jù)包寫入監(jiān)聽文件之前,會(huì)將數(shù)據(jù)包調(diào)整成標(biāo)準(zhǔn)數(shù)據(jù)量大小,其中該標(biāo)準(zhǔn)數(shù)據(jù)量通常至少大于等于各個(gè)數(shù)據(jù)包中的最大值。這樣,當(dāng)需要讀取數(shù)據(jù)包時(shí),根據(jù)標(biāo)準(zhǔn)數(shù)據(jù)量進(jìn)行移位即可在監(jiān)聽文件中準(zhǔn)確定位數(shù)據(jù)包。
【發(fā)明內(nèi)容】
[0004]但是,現(xiàn)有技術(shù)這種存儲(chǔ)數(shù)據(jù)包的方法使得讀取數(shù)據(jù)包時(shí),僅能按數(shù)據(jù)包數(shù)目定位,要想定位到指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包,則需在讀取過程中花費(fèi)大量時(shí)間對(duì)大量數(shù)據(jù)包進(jìn)行解析以從中找出符合需要的數(shù)據(jù)包,最終對(duì)監(jiān)聽人員了解服務(wù)的網(wǎng)絡(luò)狀態(tài)造成了延誤。
[0005]有鑒于此,本發(fā)明的主要目的在于提供一種監(jiān)控環(huán)境下存儲(chǔ)、讀取數(shù)據(jù)包的方法及對(duì)應(yīng)的裝置以實(shí)現(xiàn)無需在讀取過程中對(duì)數(shù)據(jù)包解析即可快速定位到指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)類型的數(shù)據(jù)包。
[0006]在本發(fā)明實(shí)施例的第一個(gè)方面,提供了一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法,例如,該方法可以包括:
[0007]接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0008]對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū);以及,判斷是否還有需接收的數(shù)據(jù)包;
[0009]如果是,返回到接收數(shù)據(jù)包的步驟。
[0010]在本發(fā)明實(shí)施例的第二個(gè)方面,提供了一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的裝置,例如,該裝置可以包括:
[0011]接收單元:用于接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0012]存儲(chǔ)單元:用于對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū);
[0013]判斷單元:用于判斷是否還有需接收的數(shù)據(jù)包,如果是,觸發(fā)接收單元執(zhí)行。
[0014]在本發(fā)明實(shí)施例的第三個(gè)方面,提供了一種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的方法,例如,該方法可以包括:
[0015]獲取應(yīng)用如上所述監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng);
[0016]獲取對(duì)數(shù)據(jù)包的讀取指令;
[0017]解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0018]根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0019]根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
[0020]在本發(fā)明實(shí)施例的第四個(gè)方面,提供了一種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的裝置,例如,該裝置可以包括:
[0021]獲取文件單元:用于獲取應(yīng)用如上述監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng);
[0022]獲取指令單元:用于獲取對(duì)數(shù)據(jù)包的讀取指令;
[0023]解析單元:用于解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0024]第一讀取單元:用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0025]第二讀取單元:用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
[0026]可見本發(fā)明具有如下有益效果:
[0027]由于本發(fā)明實(shí)施例提供的方法在接收數(shù)據(jù)包時(shí),獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻,又通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與所述監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,從而為快速讀取指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包提供了準(zhǔn)確有效的查詢信息;
[0028]相應(yīng)地,由于該文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,其中地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng),因此,可以在獲取讀取對(duì)數(shù)據(jù)包的讀取指令后,解析數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻,進(jìn)而根據(jù)該讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址,根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包,因此,應(yīng)用本發(fā)明實(shí)施例提供的方法可以按照對(duì)各種服務(wù)的網(wǎng)絡(luò)狀態(tài)分析的實(shí)際需要,快速準(zhǔn)確地讀取到指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)類型的數(shù)據(jù)包,而無需在讀取過程中對(duì)數(shù)據(jù)包解析。
[0029]另外,由于本發(fā)明實(shí)施例提供的方法根據(jù)數(shù)據(jù)包實(shí)際大小分配存儲(chǔ)區(qū),因此可以按照數(shù)據(jù)包實(shí)際大小進(jìn)行存儲(chǔ),在可以快速準(zhǔn)確定位到指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)類型的數(shù)據(jù)包的同時(shí),還達(dá)到了節(jié)省存儲(chǔ)空間的目的。
【專利附圖】
【附圖說明】
[0030]圖1是本發(fā)明實(shí)施例提供的方法的需求場(chǎng)景示意圖;
[0031]圖2是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法的流程圖之一;
[0032]圖3是本發(fā)明實(shí)施例涉及的地址記錄區(qū)示意圖;
[0033]圖4是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法的流程圖之二 ;
[0034]圖5是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法的流程圖之三;
[0035]圖6是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的裝置的結(jié)構(gòu)示意圖;
[0036]圖7是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下讀取數(shù)據(jù)包的方法的流程圖之一;
[0037]圖8是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下讀取數(shù)據(jù)包的方法的流程圖之二
[0038]圖9是本發(fā)明實(shí)施例提供的監(jiān)控環(huán)境下讀取數(shù)據(jù)包的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說明。
[0040]在多服務(wù)網(wǎng)絡(luò)狀態(tài)監(jiān)控場(chǎng)景下,通常對(duì)數(shù)據(jù)包進(jìn)行實(shí)時(shí)接收,并將其保存在監(jiān)聽文件中。例如,可能在Tl時(shí)刻,接收到SI服務(wù)的負(fù)載信令包,同時(shí)接收到S2服務(wù)的請(qǐng)求信令包、S3服務(wù)的中斷信令包等,可能在T2時(shí)刻,接收到SI服務(wù)的請(qǐng)求信令,同時(shí)接收到S4服務(wù)的中斷信令包等…。并且,每個(gè)數(shù)據(jù)包根據(jù)其服務(wù)所定義的格式,通常包含服務(wù)類型的信息。當(dāng)過段時(shí)間后,可能需要查看各種服務(wù)的網(wǎng)絡(luò)狀態(tài)時(shí),可以從監(jiān)聽文件中讀取出數(shù)據(jù)包。
[0041]在查看各種服務(wù)的網(wǎng)絡(luò)狀態(tài)時(shí),可以將讀取出的數(shù)據(jù)包從時(shí)間、服務(wù)兩個(gè)維度對(duì)數(shù)據(jù)包中的參數(shù)進(jìn)行分析,以呈現(xiàn)在如圖1所示的圖表中。例如,圖1所示的橫坐標(biāo)用于表示監(jiān)聽時(shí)刻(如數(shù)據(jù)包的接收時(shí)刻、或數(shù)據(jù)包的發(fā)送時(shí)刻等)、縱坐標(biāo)用于表示數(shù)據(jù)包內(nèi)某一指定參數(shù),不同線型用于劃分不同服務(wù)。因此,如果能夠快速讀取指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包,則可以盡快讓監(jiān)聽人員了解服務(wù)的網(wǎng)絡(luò)狀態(tài),及時(shí)發(fā)現(xiàn)問題,確保服務(wù)的穩(wěn)定。
[0042]有鑒于此,本發(fā)明提供如下監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法:
[0043]參見圖2,為本發(fā)明一實(shí)施例提供的一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法的流程圖,如圖所示,該實(shí)施例可以包括:
[0044]S210、接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0045]需要說明的是,本發(fā)明實(shí)施例可以根據(jù)業(yè)務(wù)需要確定監(jiān)聽時(shí)刻的具體獲取方式。例如,當(dāng)業(yè)務(wù)需求關(guān)注數(shù)據(jù)包的接收時(shí)刻時(shí),可以在接收數(shù)據(jù)包的同時(shí),記錄該數(shù)據(jù)包的接收時(shí)刻,將該接收時(shí)刻作為監(jiān)聽時(shí)刻;或者,再例如,當(dāng)業(yè)務(wù)需求關(guān)注數(shù)據(jù)包的發(fā)送時(shí)刻時(shí),可以在接收數(shù)據(jù)包之后,解析該數(shù)據(jù)包,從該數(shù)據(jù)包中提取出數(shù)據(jù)包的發(fā)送時(shí)刻。當(dāng)需要解析數(shù)據(jù)包獲取數(shù)據(jù)包的監(jiān)聽時(shí)刻時(shí),該監(jiān)聽時(shí)刻,可以在步驟S220對(duì)數(shù)據(jù)包進(jìn)行解析得到數(shù)據(jù)包的服務(wù)類型的同時(shí)得到。
[0046]S220、對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū);
[0047]需要說明的是,本文所述文件存儲(chǔ)區(qū)可以是對(duì)文件標(biāo)識(shí)、文件完整性定義等方面進(jìn)行過初始化的文件存儲(chǔ)區(qū),其中地址記錄區(qū)用于記錄數(shù)據(jù)包的存儲(chǔ)地址。該用于記錄數(shù)據(jù)包的存儲(chǔ)地址的地址記錄區(qū)根據(jù)實(shí)施需要例如可以采用二維索引表或者其他結(jié)構(gòu)的存儲(chǔ)區(qū)。在分配存儲(chǔ)區(qū)作為地址記錄區(qū)時(shí),既可以靜態(tài)分配,也可以根據(jù)實(shí)際需要?jiǎng)討B(tài)分配,例如,優(yōu)選方式可以是在文件存儲(chǔ)區(qū)初始化時(shí)分配一塊預(yù)設(shè)固定大小,如4K的連續(xù)存儲(chǔ)區(qū)作為地址記錄區(qū),并在分配的同時(shí)初始化該存儲(chǔ)區(qū)全部為空閑,例如,可以將該存儲(chǔ)區(qū)的各個(gè)存儲(chǔ)位置標(biāo)記為O表示空閑,在該4K的連續(xù)存儲(chǔ)區(qū)沒有可用于記錄數(shù)據(jù)包存儲(chǔ)地址的空閑位置時(shí),可以再根據(jù)實(shí)際需要分配下一塊如4K的存儲(chǔ)區(qū)作為地址記錄區(qū)。具體地,為了能夠隨數(shù)據(jù)包的增加擴(kuò)展該地址記錄區(qū),從文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū)可以包括:
[0048]在該文件存儲(chǔ)區(qū)中不存在地址記錄區(qū)時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為地址記錄區(qū);
[0049]在該文件存儲(chǔ)區(qū)中不存在地址記錄區(qū)時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為地址記錄區(qū),將該地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū);
[0050]如果當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)已無可用于寫入數(shù)據(jù)包存儲(chǔ)地址的位置時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為下一地址記錄區(qū),并將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)。
[0051]例如,如圖3所示,在當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)310已無可用于記錄數(shù)據(jù)包存儲(chǔ)地址的空閑位時(shí),將另分配的下一地址記錄區(qū)320的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)可以包括:
[0052]將下一地址記錄區(qū)標(biāo)志(如NEXT標(biāo)志)寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第一預(yù)設(shè)位置(如最后一個(gè)位置330),或者,還可以在下一地址記錄區(qū)的首地址寫入上一地址記錄區(qū)標(biāo)志(如PREV1US標(biāo)志);
[0053]將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第二預(yù)設(shè)位置(如倒數(shù)第二個(gè)位置340);
[0054]統(tǒng)計(jì)該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)中已寫入的數(shù)據(jù)包存儲(chǔ)地址總數(shù),將統(tǒng)計(jì)的總數(shù)寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第三預(yù)設(shè)位置(如倒數(shù)第三個(gè)位置350)。
[0055]這樣,后續(xù)在讀取數(shù)據(jù)包存儲(chǔ)地址時(shí),可以根據(jù)當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)預(yù)留的第二預(yù)設(shè)位置查詢到下一地址記錄區(qū),在實(shí)現(xiàn)地址記錄區(qū)擴(kuò)展的同時(shí)可以準(zhǔn)確找到每一個(gè)地址記錄區(qū)。
[0056]S230、以及,判斷是否還有需接收的數(shù)據(jù)包;
[0057]S240、如果是,返回到接收數(shù)據(jù)包的步驟。
[0058]可見,應(yīng)用本發(fā)明上述存儲(chǔ)數(shù)據(jù)包的方法,可以按照數(shù)據(jù)包實(shí)際大小存儲(chǔ)達(dá)到節(jié)省存儲(chǔ)空間的目的,而且,又通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,從而為準(zhǔn)確讀取出指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包提供了準(zhǔn)確有效的查詢信息。
[0059]參見圖4,為本發(fā)明另一實(shí)施例提供的一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法的流程圖。該實(shí)施例針對(duì)數(shù)據(jù)包到達(dá)頻率較快,易發(fā)生丟包的問題,采取了二級(jí)緩存策略接收數(shù)據(jù)包。如圖所示,該實(shí)施例可以包括:
[0060]S410、接收數(shù)據(jù)包,將接收的數(shù)據(jù)包放入內(nèi)存,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0061]S420、將數(shù)據(jù)包從內(nèi)存中取出;
[0062]S430、對(duì)該數(shù)據(jù)包執(zhí)行所述存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū);
[0063]需要說明的是,本發(fā)明實(shí)施例對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟可以包括如下兩種實(shí)現(xiàn)方式:(方式一)例如,本發(fā)明實(shí)施例中的步驟S430對(duì)數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之后還可以包括:判斷內(nèi)存中是否還有未取出的數(shù)據(jù)包,如果有,從內(nèi)存中取出該還未取出的數(shù)據(jù)包,返回到對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟的步驟。從流程執(zhí)行的角度來看,其中步驟S420由第二子流程從內(nèi)存中取出該數(shù)據(jù)包之后,可以由該第二子流程執(zhí)行步驟S430以對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,這樣,所述第二子流程可以在對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟結(jié)束后,判斷內(nèi)存中是否還有未取出的數(shù)據(jù)包,如果有,返回到步驟S420由第二子流程從內(nèi)存中取出數(shù)據(jù)包的步驟;或者(方式二)例如,本發(fā)明實(shí)施例中的步驟S430對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟時(shí),如果實(shí)時(shí)監(jiān)聽到另一數(shù)據(jù)包到達(dá)內(nèi)存,從內(nèi)存中取出該數(shù)據(jù)包,對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,相應(yīng)地,步驟S420所述將該數(shù)據(jù)包從內(nèi)存中取出具體在實(shí)時(shí)監(jiān)聽到數(shù)據(jù)包到達(dá)內(nèi)存時(shí),從內(nèi)存中取出該數(shù)據(jù)包。從流程執(zhí)行的角度來看,其中步驟S420由第二子流程從內(nèi)存中取出該數(shù)據(jù)包之后,可以由該第二子流程將該數(shù)據(jù)包發(fā)送給空閑的第三子流程,由該第三子流程對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,其中第三子流程可以為多個(gè)。這樣,所述第二子流程可以通過實(shí)時(shí)監(jiān)聽數(shù)據(jù)包到達(dá)內(nèi)存的狀態(tài),判斷內(nèi)存中是否有還未取出的數(shù)據(jù)包,如果有,返回到由第二子流程從內(nèi)存中取出該數(shù)據(jù)包的步驟。
[0064]S440、以及,根據(jù)實(shí)時(shí)監(jiān)聽數(shù)據(jù)包到達(dá)的狀態(tài)判斷是否還有需接收的數(shù)據(jù)包;
[0065]S450、如果是,返回到接收數(shù)據(jù)包的步驟。
[0066]應(yīng)用本發(fā)明該實(shí)施例,由于令第一子流程接收數(shù)據(jù)包,在接收數(shù)據(jù)包之后即放入內(nèi)存,因此,即使在數(shù)據(jù)包到達(dá)頻率較快時(shí),也不會(huì)發(fā)生丟包的現(xiàn)象。而且,被放入內(nèi)存的數(shù)據(jù)包可以由第二子流程順序逐個(gè)執(zhí)行存儲(chǔ)步驟,或者,也可以由第二子流程實(shí)時(shí)監(jiān)聽數(shù)據(jù)包到達(dá)內(nèi)存的狀態(tài),及時(shí)從內(nèi)存中取出數(shù)據(jù)包,再啟動(dòng)預(yù)先建立的多個(gè)第三子流程分別對(duì)不同的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,相當(dāng)于利用若干個(gè)用于執(zhí)行存儲(chǔ)步驟的第三子流程(如,線程/進(jìn)程)分別對(duì)多個(gè)數(shù)據(jù)包并行存儲(chǔ),可以提高效率。
[0067]需要說明的是,本文所述數(shù)據(jù)包的存儲(chǔ)地址可以為該數(shù)據(jù)包的存儲(chǔ)地址的首地址。
[0068]參見圖5,為本發(fā)明又一實(shí)施例提供的一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法的流程圖,在該實(shí)施例中,所述地址記錄區(qū)如圖3所示為二維索引表,其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻,如圖所示,該實(shí)施例可以包括:
[0069]S510、接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0070]對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:
[0071]S521、根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型;
[0072]S522、查詢出該數(shù)據(jù)包的服務(wù)類型在所述二維索引表中對(duì)應(yīng)的列,假定為J列;
[0073]S523、如果所述二維索引表中不存在任一數(shù)據(jù)包存儲(chǔ)地址,將寫數(shù)據(jù)指針移位至所述二維索引表的第一行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0074]例如,假定從二維索引表的第一列至第J列,每列均占預(yù)設(shè)固定位數(shù),如,每個(gè)數(shù)據(jù)包存儲(chǔ)地址在寫入二維索引表時(shí)均占預(yù)設(shè)固定位數(shù)D,所述將寫數(shù)據(jù)指針移位至所述二維索引表的第一行的第J列的具體實(shí)現(xiàn)可以為:將寫數(shù)據(jù)指針相對(duì)于二維索引表的首位移位至第(J-1) *D位,從該位開始寫入該數(shù)據(jù)包的存儲(chǔ)地址。
[0075]其中,將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻的具體實(shí)現(xiàn)方式可以根據(jù)實(shí)際實(shí)施需要采取相應(yīng)的方法,例如:假設(shè)本發(fā)明實(shí)施例對(duì)同一監(jiān)聽時(shí)刻接收的多個(gè)數(shù)據(jù)包可能會(huì)在不同次存儲(chǔ)操作中存儲(chǔ)。在這種情況下,可以將二維索引表的預(yù)設(shè)某一列用于記錄數(shù)據(jù)包的監(jiān)聽時(shí)刻。進(jìn)而可以將該數(shù)據(jù)包的監(jiān)聽時(shí)刻寫入該第一行的預(yù)設(shè)某一列以實(shí)現(xiàn)將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻?;蛘?,再例如:假設(shè)本發(fā)明實(shí)施例對(duì)同一監(jiān)聽時(shí)刻接收的多個(gè)數(shù)據(jù)包會(huì)在同一次存儲(chǔ)操作中存儲(chǔ)。在這種情況下,會(huì)將該多個(gè)數(shù)據(jù)包的存儲(chǔ)地址在同一次存儲(chǔ)操作中寫入第一行,此時(shí),只要將數(shù)據(jù)包的存儲(chǔ)地址寫入第一行,即可實(shí)現(xiàn)將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻。
[0076]S524、如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,將寫數(shù)據(jù)指針移位至該已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù);
[0077]基于上述假設(shè)的場(chǎng)景,其中判斷所述二維索引表中是否已存在任一數(shù)據(jù)包存儲(chǔ)地址且已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行的具體實(shí)現(xiàn)方式也可以根據(jù)實(shí)施需要采取相應(yīng)的判斷方法,例如:假設(shè)本發(fā)明實(shí)施例對(duì)同一監(jiān)聽時(shí)刻接收的多個(gè)數(shù)據(jù)包可能會(huì)在不同次存儲(chǔ)操作中存儲(chǔ)。在這種情況下,可以將二維索引表的預(yù)設(shè)某一列用于記錄數(shù)據(jù)包的監(jiān)聽時(shí)刻。這樣,在對(duì)某一數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟時(shí),可以遍歷二維索引表的預(yù)設(shè)某一列,在遍歷過程中判斷二維索引表的預(yù)設(shè)某一列是否記錄了與該數(shù)據(jù)包的監(jiān)聽時(shí)刻相同的監(jiān)聽時(shí)亥IJ,如果是,則可以遍歷至記錄了與該數(shù)據(jù)包的監(jiān)聽時(shí)刻相同的監(jiān)聽時(shí)刻的行停止,將寫數(shù)據(jù)指針移位至該已記錄了與該數(shù)據(jù)包的監(jiān)聽時(shí)刻相同的監(jiān)聽時(shí)刻的行的第J列?;蛘?,再例如,假設(shè)本發(fā)明實(shí)施例對(duì)同一監(jiān)聽時(shí)刻接收的多個(gè)數(shù)據(jù)包會(huì)在同一次存儲(chǔ)操作中存儲(chǔ)。在這種情況下,在對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)時(shí),二維索引表中不會(huì)已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,則無需判斷所述二維索引表中是否已存在任一數(shù)據(jù)包存儲(chǔ)地址且已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行。
[0078]S525、如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且不存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,查詢出第一個(gè)未寫入數(shù)據(jù)包存儲(chǔ)地址的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0079]基于上述假設(shè)的場(chǎng)景,其中判斷所述二維索引表中是否已存在任一數(shù)據(jù)包存儲(chǔ)地址且不存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行的具體實(shí)現(xiàn)方式可以根據(jù)實(shí)施需要采取相應(yīng)的判斷方法,例如:假設(shè)本發(fā)明實(shí)施例對(duì)同一監(jiān)聽時(shí)刻接收的多個(gè)數(shù)據(jù)包可能會(huì)在不同次存儲(chǔ)操作中存儲(chǔ)。在這種情況下,可以將二維索引表的預(yù)設(shè)某一列用于記錄數(shù)據(jù)包的監(jiān)聽時(shí)刻。這樣,在對(duì)某一數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟時(shí),可以遍歷二維索引表的預(yù)設(shè)某一列,在遍歷過程中判斷二維索引表的預(yù)設(shè)某一列是否存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻相同的監(jiān)聽時(shí)刻,如果不存在,則可以遍歷至第一個(gè)未寫入數(shù)據(jù)包存儲(chǔ)地址的行停止,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),再將該數(shù)據(jù)包的監(jiān)聽時(shí)刻寫入該行的預(yù)設(shè)某一列以實(shí)現(xiàn)將該行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻?;蛘?,再例如,假設(shè)本發(fā)明實(shí)施例對(duì)同一監(jiān)聽時(shí)刻接收的多個(gè)數(shù)據(jù)包會(huì)在同一次存儲(chǔ)操作中存儲(chǔ)。在這種情況下,在對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)時(shí),可以遍歷二維索引表的行,在遍歷過程中判斷該行中是否已存在數(shù)據(jù)包存儲(chǔ)地址,如果存在,則可以遍歷至第一個(gè)未寫入數(shù)據(jù)包存儲(chǔ)地址的行停止,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù)。
[0080]S530、以及,判斷是否還有需接收的數(shù)據(jù)包;
[0081]S540、如果是,返回到接收數(shù)據(jù)包的步驟。
[0082]在該實(shí)施例中,地址記錄區(qū)采用了二維索引表的存儲(chǔ)結(jié)構(gòu),其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻,使得確定與數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置更加簡(jiǎn)單快速,提高存儲(chǔ)速度。
[0083]參見圖6,為本發(fā)明一實(shí)施例提供的一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的裝置的結(jié)構(gòu)示意圖,如圖所示,該裝置可以包括:
[0084]接收單元610:可以用于接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0085]存儲(chǔ)單元620:可以用于對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū);
[0086]判斷單元630:可以用于判斷是否還有需接收的數(shù)據(jù)包,如果是,觸發(fā)接收單元執(zhí)行。
[0087]為了能夠隨數(shù)據(jù)包的增加擴(kuò)展該地址記錄區(qū),本發(fā)明實(shí)施例的所述存儲(chǔ)單元620:可以用于在該文件存儲(chǔ)區(qū)中不存在地址記錄區(qū)時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為地址記錄區(qū),將該地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū);如果當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)已無可用于寫入數(shù)據(jù)包存儲(chǔ)地址的位置時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為下一地址記錄區(qū),并將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)。
[0088]再具體地,例如,本發(fā)明實(shí)施例提供的裝置的存儲(chǔ)單元620:可以用于將下一地址記錄區(qū)標(biāo)志寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第一預(yù)設(shè)位置;將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第二預(yù)設(shè)位置;統(tǒng)計(jì)該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)中已寫入的數(shù)據(jù)包存儲(chǔ)地址總數(shù),將統(tǒng)計(jì)的總數(shù)寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第三預(yù)設(shè)位置。
[0089]在本發(fā)明另一實(shí)施例提供的裝置中,為了解決數(shù)據(jù)包到達(dá)頻率快易發(fā)生丟包的問題,采取了二級(jí)緩存策略接收數(shù)據(jù)包,例如,該實(shí)施例提供的裝置的接收單元610:可以用于在接收數(shù)據(jù)包之后,還將該數(shù)據(jù)包放入內(nèi)存;相應(yīng)地,所述存儲(chǔ)單元620:可以用于在對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之前,還將該數(shù)據(jù)包從內(nèi)存中取出;相應(yīng)地,所述判斷單元630:可以用于根據(jù)實(shí)時(shí)監(jiān)聽數(shù)據(jù)包到達(dá)的狀態(tài)判斷是否還有需接收的數(shù)據(jù)包。
[0090]基于該實(shí)施例,其中所述存儲(chǔ)單元620的一種可能的實(shí)現(xiàn)方式為:可以用于在對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之后,還判斷內(nèi)存是否還有未取出的數(shù)據(jù)包,如果有,從內(nèi)存中取出該還未取出的數(shù)據(jù)包,返回到對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟的步驟。該種實(shí)現(xiàn)方式可以在一個(gè)數(shù)據(jù)包存儲(chǔ)后,再對(duì)下一個(gè)數(shù)據(jù)包進(jìn)行存儲(chǔ),相當(dāng)于逐個(gè)順序存儲(chǔ)。
[0091]所述存儲(chǔ)單元620的另一種可能的實(shí)現(xiàn)方式為:可以用于在實(shí)時(shí)監(jiān)聽到數(shù)據(jù)包到達(dá)內(nèi)存時(shí),從內(nèi)從中取出該數(shù)據(jù)包,在對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟時(shí),如果實(shí)時(shí)監(jiān)聽到另一數(shù)據(jù)包到達(dá)內(nèi)存,從內(nèi)從中取出該數(shù)據(jù)包,對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟。該種實(shí)現(xiàn)方式可以利用若干個(gè)用于執(zhí)行存儲(chǔ)步驟的子流程分別對(duì)多個(gè)數(shù)據(jù)包并行存儲(chǔ),可以提高效率。
[0092]為了簡(jiǎn)單快速的確定于數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,本發(fā)明實(shí)施例所述的地址記錄區(qū)可以為二維索引表,其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻,相應(yīng)地,本發(fā)明實(shí)施例提供的裝置的所述存儲(chǔ)單元620:可以用于對(duì)接收到的數(shù)據(jù)包執(zhí)行包括如下步驟的存儲(chǔ)步驟:查詢出該數(shù)據(jù)包的服務(wù)類型在所述二維索引表中對(duì)應(yīng)的列,假定為J列;如果所述二維索引表中不存在任一數(shù)據(jù)包存儲(chǔ)地址,將寫數(shù)據(jù)指針移位至所述二維索引表的第一行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻;如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù);如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且不存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,查詢出第一個(gè)未寫入數(shù)據(jù)包存儲(chǔ)地址的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻。
[0093]參見圖7,為本發(fā)明一實(shí)施例提供的一種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的方法的流程圖,如圖所示,該方法可以包括:
[0094]S710、獲取應(yīng)用如上述一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng);
[0095]S720、獲取對(duì)數(shù)據(jù)包的讀取指令;
[0096]S730、解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0097]S740、根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0098]需要說明的是,文件存儲(chǔ)區(qū)中可能存在多個(gè)地址記錄區(qū),此時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)中均記錄了該地址記錄區(qū)之后的下一地址記錄區(qū)的地址。對(duì)應(yīng)這種情況,在讀取數(shù)據(jù)包存儲(chǔ)地址時(shí),應(yīng)根據(jù)對(duì)數(shù)據(jù)包的讀取指令在所述多個(gè)地址記錄區(qū)中定位與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻及待讀取數(shù)據(jù)包的服務(wù)類型的位置,例如,該S740步驟可以包括:
[0099]根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0100]根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,判斷是否結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀??;
[0101]如果否,且該當(dāng)前地址記錄區(qū)記錄了下一地址記錄區(qū)的地址,根據(jù)該當(dāng)前地址記錄區(qū)記錄的下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),返回到根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
[0102]更具體地,例如,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)的第一預(yù)設(shè)位置(如最后一個(gè)位置)中均記錄了下一地址記錄區(qū)標(biāo)志,每個(gè)非最后一個(gè)地址記錄區(qū)的第二預(yù)設(shè)位置(如倒數(shù)第二個(gè)位置)中均記錄了該地址記錄區(qū)之后的下一個(gè)地址記錄區(qū)的地址,每個(gè)非最后一個(gè)地址記錄區(qū)的第三預(yù)設(shè)位置(如倒數(shù)第三個(gè)位置)中均記錄了該地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù)。相應(yīng)地,該S740步驟可以包括:
[0103]根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0104]如果還未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取,判斷該當(dāng)前地址記錄區(qū)中第一預(yù)設(shè)位置是否存在下一地址記錄區(qū)標(biāo)志;
[0105]如果存在,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一地址記錄區(qū)的地址,根據(jù)該下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),繼續(xù)執(zhí)行所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
[0106]S750、根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
[0107]由于本發(fā)明上述實(shí)施例提供的方法中所獲取的文件存儲(chǔ)區(qū)保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng),因此,在獲取對(duì)數(shù)據(jù)包的讀取指令后,可以通過解析該讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻,進(jìn)而可以直接從地址記錄區(qū)中與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置讀取出數(shù)據(jù)包存儲(chǔ)地址,而無需對(duì)數(shù)據(jù)包進(jìn)行解析,實(shí)現(xiàn)了快速準(zhǔn)確地讀取出指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包的目的。
[0108]參見圖8,為本發(fā)明另一實(shí)施例提供的一種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的方法的流程圖,如圖所示,該實(shí)施例可以包括:
[0109]S810、獲取應(yīng)用如上述一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了二維索引表和數(shù)據(jù)包,所述二維索引表用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,一列對(duì)應(yīng)一個(gè)服務(wù)類型、一個(gè)行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻、每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng);
[0110]S820、獲取對(duì)數(shù)據(jù)包的讀取指令;
[0111]S830、解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0112]S840、根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0113]S850、根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
[0114]在該實(shí)施例中,由于地址記錄區(qū)采用了二維索引表的存儲(chǔ)結(jié)構(gòu),使得確定與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置更加簡(jiǎn)單快速,提高讀取速度。
[0115]下面,結(jié)合幾種可能的對(duì)數(shù)據(jù)包的讀取指令,對(duì)該實(shí)施例讀取數(shù)據(jù)包存儲(chǔ)地址的具體實(shí)現(xiàn)方式進(jìn)行詳細(xì)介紹,例如:
[0116]在一種可能的實(shí)現(xiàn)方式中,所述對(duì)數(shù)據(jù)包的讀取指令可以為每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)讀取出與一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的在第二預(yù)設(shè)數(shù)量個(gè)時(shí)刻內(nèi)的數(shù)據(jù)包;
[0117]相應(yīng)地,所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址可以包括:
[0118]在二維索引表中,將讀數(shù)據(jù)指針每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)偏移第二預(yù)設(shè)數(shù)量個(gè)行,每偏移一行時(shí),從該行與所述一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的列中讀取出數(shù)據(jù)包存儲(chǔ)地址,如果所述讀數(shù)據(jù)指針偏移至非最后一個(gè)二維索引表的表尾,確定未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取;
[0119]所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包可以包括:
[0120]在讀取出一個(gè)數(shù)據(jù)包存儲(chǔ)地址的同時(shí),尋址到該數(shù)據(jù)包存儲(chǔ)地址,從中讀取出數(shù)據(jù)包。
[0121]在另一種可能的實(shí)現(xiàn)方式中,所述對(duì)數(shù)據(jù)包的讀取指令可以為讀取與任一監(jiān)聽時(shí)刻對(duì)應(yīng)、與任一服務(wù)類型對(duì)應(yīng)、且排序位置在所有數(shù)據(jù)包中指定百分比位置的某個(gè)數(shù)據(jù)包;
[0122]相應(yīng)地,所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址可以包括:
[0123]將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù)的初始值;
[0124]如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表,通過所述遍歷及根據(jù)所述當(dāng)前二維索引表中保存的每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,計(jì)算當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù);
[0125]如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前二維索引表的第三預(yù)設(shè)位置讀取出當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),從該當(dāng)前二維索引表的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到所述如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表的步驟;
[0126]將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置臨時(shí)計(jì)數(shù)值的初值;
[0127]假定該某個(gè)數(shù)據(jù)包為第X個(gè)數(shù)據(jù)包,根據(jù)X等于所述指定百分比乘以所述數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),計(jì)算出X值;
[0128]如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值,判斷所述臨時(shí)計(jì)數(shù)值是否大于或等于所述X值,如果否且當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值的步驟;
[0129]根據(jù)所述臨時(shí)計(jì)數(shù)值與X值的差值、每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,查詢出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在當(dāng)前二維索引表中的位置;
[0130]將讀數(shù)據(jù)指針移位至該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在二維索引表中的位置,讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址,并且確定結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取。
[0131]在又一種可能的實(shí)現(xiàn)方式中,所述對(duì)數(shù)據(jù)包的讀取指令可以為讀取指定服務(wù)類型的第X個(gè)數(shù)據(jù)包;
[0132]相應(yīng)地,所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址可以包括:
[0133]假定所述指定服務(wù)類型對(duì)應(yīng)的列為J列,假定所述當(dāng)前二維索引表的列共對(duì)應(yīng)SN個(gè)服務(wù)類型,假定每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)D ;
[0134]設(shè)置N=I及指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)=0 ;
[0135]判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位;
[0136]如果不存在且當(dāng)前二維索引表的最后一個(gè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前二維索引表的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,設(shè)置N=l,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟;
[0137]如果存在,判斷當(dāng)前二維索引表的第D* (N*SN+J)位是否存在特殊標(biāo)記,其中所述特殊標(biāo)記用于標(biāo)識(shí)二維索引表中未寫入數(shù)據(jù)包存儲(chǔ)地址的位置,如果不存在,指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)加1,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)小于X值,N=N+1,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)等于X值,將讀數(shù)據(jù)指針移位至當(dāng)前索引表的該第D* (N*SN+J)位,從中讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址。
[0138]需要說明的是,為了便于區(qū)分地址記錄區(qū)中的各個(gè)數(shù)據(jù)包的存儲(chǔ)地址,本發(fā)明上述實(shí)施例約定了地址記錄區(qū)中記錄的數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)。可以理解的是,在本發(fā)明具體實(shí)施時(shí)還可以約定其他可以在地址記錄區(qū)中區(qū)分各個(gè)數(shù)據(jù)包存儲(chǔ)地址的規(guī)則,在本發(fā)明并不進(jìn)行限制。
[0139]參見圖9為本發(fā)明另一實(shí)施例提供的一種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的裝置的結(jié)構(gòu)示意圖,如圖所示,該實(shí)施例可以包括:
[0140]獲取文件單元910:可以用于獲取應(yīng)用如上述一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng);
[0141]獲取指令單元920:可以用于獲取對(duì)數(shù)據(jù)包的讀取指令;
[0142]解析單元930:可以用于解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻;
[0143]第一讀取單元940:可以用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;
[0144]第二讀取單元950:可以用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
[0145]對(duì)應(yīng)文件存儲(chǔ)區(qū)可能存在多個(gè)地址記錄區(qū)的情況,本發(fā)明實(shí)施例所述的獲取文件單元910:可以用于獲取應(yīng)用如上述一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)中均記錄了該地址記錄區(qū)之后的下一地址記錄區(qū)的地址;
[0146]相應(yīng)地,所述第一讀取單元940:可以用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,判斷是否結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取;如果否,且該當(dāng)前地址記錄區(qū)記錄了下一地址記錄區(qū)的地址,根據(jù)該當(dāng)前地址記錄區(qū)記錄的下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),返回到根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
[0147]再具體地,例如所述獲取文件單元910:可以用于獲取應(yīng)用如上述一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)的第一預(yù)設(shè)位置中均記錄了下一地址記錄區(qū)標(biāo)志,每個(gè)非最后一個(gè)地址記錄區(qū)的第二預(yù)設(shè)位置中均記錄了該地址記錄區(qū)之后的下一個(gè)地址記錄區(qū)的地址,每個(gè)非最后一個(gè)地址記錄區(qū)的第三預(yù)設(shè)位置中均記錄了該地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù);
[0148]相應(yīng)地,所述第一讀取單元940:可以用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;如果還未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取,判斷該當(dāng)前地址記錄區(qū)中第一預(yù)設(shè)位置是否存在下一地址記錄區(qū)標(biāo)志;如果存在,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一地址記錄區(qū)的地址,根據(jù)該下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),繼續(xù)執(zhí)行所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
[0149]為了簡(jiǎn)單快速的確定于待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,本發(fā)明實(shí)施例所述的地址記錄區(qū)可以采用二維索引表的存儲(chǔ)結(jié)構(gòu)。例如,本發(fā)明實(shí)施例提供的裝置的獲取文件單元910:可以用于獲取應(yīng)用如上述一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,其中所述地址記錄區(qū)為二維索引表,其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻;
[0150]相應(yīng)地,所述第一讀取單元940:可以用于根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址。
[0151]下面結(jié)合幾種可能的對(duì)數(shù)據(jù)包的讀取指令,對(duì)本發(fā)明實(shí)施例讀取數(shù)據(jù)包存儲(chǔ)地址的具體實(shí)現(xiàn)方式進(jìn)行詳細(xì)介紹,例如:
[0152]在一種可能的實(shí)現(xiàn)方式中,所述獲取指令單元920:可以用于獲取對(duì)數(shù)據(jù)包的讀取指令,所述對(duì)數(shù)據(jù)包的讀取指令為:每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)讀取出與一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的在第二預(yù)設(shè)數(shù)量個(gè)時(shí)刻內(nèi)的數(shù)據(jù)包;
[0153]相應(yīng)地,所述第一讀取單元940:可以用于在二維索引表中,將讀數(shù)據(jù)指針每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)偏移第二預(yù)設(shè)數(shù)量個(gè)行,每偏移一行時(shí),從該行與所述一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的列中讀取出數(shù)據(jù)包存儲(chǔ)地址,如果所述讀數(shù)據(jù)指針偏移至非最后一個(gè)二維索引表的表尾,確定未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀??;
[0154]所述第二讀取單元950:可以用于在讀取出一個(gè)數(shù)據(jù)包存儲(chǔ)地址的同時(shí),尋址到該數(shù)據(jù)包存儲(chǔ)地址,從中讀取出數(shù)據(jù)包。
[0155]在另一種可能的實(shí)現(xiàn)方式中,所述獲取指令單元920:可以用于獲取對(duì)數(shù)據(jù)包的讀取指令,所述對(duì)數(shù)據(jù)包的讀取指令為:讀取與任一監(jiān)聽時(shí)刻對(duì)應(yīng)、與任一服務(wù)類型對(duì)應(yīng)、且排序位置在所有數(shù)據(jù)包中指定百分比位置的某個(gè)數(shù)據(jù)包;
[0156]相應(yīng)地,所述第一讀取單元940:可以用于將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù)的初始值;如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表,通過所述遍歷及根據(jù)所述當(dāng)前二維索引表中保存的每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,計(jì)算當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù);如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前二維索引表的第三預(yù)設(shè)位置讀取出當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),從該當(dāng)前二維索引表的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到所述如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表的步驟;將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置臨時(shí)計(jì)數(shù)值的初值;假定該某個(gè)數(shù)據(jù)包為第X個(gè)數(shù)據(jù)包,根據(jù)X等于所述指定百分比乘以所述數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),計(jì)算出X值;如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值,判斷所述臨時(shí)計(jì)數(shù)值是否大于或等于所述X值,如果否且當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值的步驟;根據(jù)所述臨時(shí)計(jì)數(shù)值與X值的差值、每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,查詢出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在當(dāng)前二維索引表中的位置;將讀數(shù)據(jù)指針移位至該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在二維索引表中的位置,讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址,并且確定結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取。
[0157]在又一種可能的實(shí)現(xiàn)方式中,所述獲取指令單元920:可以用于獲取對(duì)數(shù)據(jù)包的讀取指令,所述對(duì)數(shù)據(jù)包的讀取指令為:讀取指定服務(wù)類型的第X個(gè)數(shù)據(jù)包;
[0158]相應(yīng)地,所述第一讀取單元940:可以用于假定所述指定服務(wù)類型對(duì)應(yīng)的列為J列,假定所述當(dāng)前二維索引表的列共對(duì)應(yīng)SN個(gè)服務(wù)類型,假定每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)D ;設(shè)置N=I及指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)=0 ;判斷當(dāng)前二維索引表是否存在第D*(N*SN+J)位;如果不存在且當(dāng)前二維索引表的最后一行的最后一個(gè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,設(shè)置N=l,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟;如果存在,判斷當(dāng)前二維索引表的第D* (N*SN+J)位是否存在特殊標(biāo)記,其中所述特殊標(biāo)記用于標(biāo)識(shí)二維索引表中未寫入數(shù)據(jù)包存儲(chǔ)地址的位置,如果不存在,指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)加1,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)小于X值,N=N+1,返回到判斷當(dāng)前二維索引表是否存在第D*(N*SN+J)位的步驟,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)等于X值,將讀數(shù)據(jù)指針移位至當(dāng)前索引表的該第D* (N*SN+J)位,從中讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址。
[0159]可見,由于本發(fā)明上述實(shí)施例獲取文件單元所獲取的文件存儲(chǔ)區(qū)保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng),因此,在獲取對(duì)數(shù)據(jù)包的讀取指令后,可以由解析單元解析該讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻,進(jìn)而第一讀取單元可以直接從地址記錄區(qū)中與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置讀取出數(shù)據(jù)包存儲(chǔ)地址,再由第二讀取單元從數(shù)據(jù)包存儲(chǔ)地址直接讀取出數(shù)據(jù)包,而無需對(duì)數(shù)據(jù)包進(jìn)行解析,可以快速準(zhǔn)確地讀取出指定監(jiān)聽時(shí)間段內(nèi)指定服務(wù)的數(shù)據(jù)包,進(jìn)而使監(jiān)聽人員快速了解服務(wù)的網(wǎng)絡(luò)狀態(tài),及時(shí)發(fā)現(xiàn)問題,確保服務(wù)的穩(wěn)定。
[0160]需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0161]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的方法,其特征在于,包括: 接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻; 對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū);以及,判斷是否還有需接收的數(shù)據(jù)包; 如果是,返回到接收數(shù)據(jù)包的步驟。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū)包括: 在該文件存儲(chǔ)區(qū)中不存在地址記錄區(qū)時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為地址記錄區(qū),將該地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū); 如果當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)已無可用于寫入數(shù)據(jù)包存儲(chǔ)地址的位置時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為下一地址記錄區(qū),并將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)包括: 將下一地址記錄區(qū)標(biāo)志寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第一預(yù)設(shè)位置; 將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第二預(yù)設(shè)位置; 統(tǒng)計(jì)該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)中已寫入的數(shù)據(jù)包存儲(chǔ)地址總數(shù),將統(tǒng)計(jì)的總數(shù)寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第三預(yù)設(shè)位置。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述接收數(shù)據(jù)包之后,還包括:將該數(shù)據(jù)包放入內(nèi)存; 在所述對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之前,還包括:將該數(shù)據(jù)包從內(nèi)存中取出; 所述判斷是否還有需接收的數(shù)據(jù)包具體根據(jù)實(shí)時(shí)監(jiān)聽數(shù)據(jù)包到達(dá)的狀態(tài)進(jìn)行判斷。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之后還包括:判斷內(nèi)存中是否還有未取出的數(shù)據(jù)包,如果有,從內(nèi)存中取出該還未取出的數(shù)據(jù)包,返回到對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟的步驟。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述將該數(shù)據(jù)包從內(nèi)存中取出具體在實(shí)時(shí)監(jiān)聽到數(shù)據(jù)包到達(dá)內(nèi)存時(shí),從內(nèi)存中取出該數(shù)據(jù)包; 所述對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟時(shí),如果實(shí)時(shí)監(jiān)聽到另一數(shù)據(jù)包到達(dá)內(nèi)存,從內(nèi)存中取出該數(shù)據(jù)包,對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟。
7.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的方法,其特征在于,所述地址記錄區(qū)為二維索引表,其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻; 所述將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置的具體實(shí)現(xiàn)為: 查詢出該數(shù)據(jù)包的服務(wù)類型在所述二維索引表中對(duì)應(yīng)的列,假定為J列; 如果所述二維索引表中不存在任一數(shù)據(jù)包存儲(chǔ)地址,將寫數(shù)據(jù)指針移位至所述二維索引表的第一行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻; 如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù); 如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且不存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,查詢出第一個(gè)未寫入數(shù)據(jù)包存儲(chǔ)地址的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻。
8.—種監(jiān)控環(huán)境下存儲(chǔ)數(shù)據(jù)包的裝置,其特征在于,包括: 接收單元:用于接收數(shù)據(jù)包,以及獲取該數(shù)據(jù)包的監(jiān)聽時(shí)刻; 存儲(chǔ)單元:用于對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟,所述存儲(chǔ)步驟包括:根據(jù)該數(shù)據(jù)包大小,從文件存儲(chǔ)區(qū)中動(dòng)態(tài)分配存儲(chǔ)區(qū)保存該數(shù)據(jù)包,提取該數(shù)據(jù)包的存儲(chǔ)地址,以及通過對(duì)該數(shù)據(jù)包進(jìn)行解析得到該數(shù)據(jù)包的服務(wù)類型,將該數(shù)據(jù)包的存儲(chǔ)地址寫入地址記錄區(qū)中與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)、且與該數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)的位置,其中,該文件存儲(chǔ)區(qū)中至少分配一塊存儲(chǔ)區(qū)作為地址記錄區(qū); 判斷單元:用于判斷是否還有需接收的數(shù)據(jù)包,如果是,觸發(fā)接收單元執(zhí)行。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述存儲(chǔ)單元:用于在該文件存儲(chǔ)區(qū)中不存在地址記錄區(qū)時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為地址記錄區(qū),將該地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū);如果當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)已無可用于寫入數(shù)據(jù)包存儲(chǔ)地址的位置時(shí),分配一塊連續(xù)的存儲(chǔ)區(qū)作為下一地址記錄區(qū),并將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述存儲(chǔ)單元:用于將下一地址記錄區(qū)標(biāo)志寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第一預(yù)設(shè)位置;將該下一地址記錄區(qū)的地址寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第二預(yù)設(shè)位置;統(tǒng)計(jì)該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)中已寫入的數(shù)據(jù)包存儲(chǔ)地址總數(shù),將統(tǒng)計(jì)的總數(shù)寫入該當(dāng)前用于寫入數(shù)據(jù)包存儲(chǔ)地址的地址記錄區(qū)的第三預(yù)設(shè)位置。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述接收單元:用于在接收數(shù)據(jù)包之后,還將該數(shù)據(jù)包放入內(nèi)存; 所述存儲(chǔ)單元:用于在對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之前,還將該數(shù)據(jù)包從內(nèi)存中取出; 所述判斷單元:用于根據(jù)實(shí)時(shí)監(jiān)聽數(shù)據(jù)包到達(dá)的狀態(tài)判斷是否還有需接收的數(shù)據(jù)包。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述存儲(chǔ)單元:用于在對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟之后,還判斷內(nèi)存是否還有未取出的數(shù)據(jù)包,如果有,從內(nèi)存中取出該還未取出的數(shù)據(jù)包,返回到對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟的步驟。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述存儲(chǔ)單元:用于在實(shí)時(shí)監(jiān)聽到數(shù)據(jù)包到達(dá)內(nèi)存時(shí),從內(nèi)從中取出該數(shù)據(jù)包,在對(duì)接收到的數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟時(shí),如果實(shí)時(shí)監(jiān)聽到另一數(shù)據(jù)包到達(dá)內(nèi)存,從內(nèi)從中取出該數(shù)據(jù)包,對(duì)該數(shù)據(jù)包執(zhí)行存儲(chǔ)步驟。
14.根據(jù)權(quán)利要求8-13任一項(xiàng)所述的裝置,其特征在于,所述存儲(chǔ)單元:用于對(duì)接收到的數(shù)據(jù)包執(zhí)行包括如下步驟的存儲(chǔ)步驟:查詢出該數(shù)據(jù)包的服務(wù)類型在所述二維索引表中對(duì)應(yīng)的列,假定為J列;如果所述二維索引表中不存在任一數(shù)據(jù)包存儲(chǔ)地址,將寫數(shù)據(jù)指針移位至所述二維索引表的第一行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該第一行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻;如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且已存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù);如果所述二維索引表中已存在任一數(shù)據(jù)包存儲(chǔ)地址且不存在與該數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的行,查詢出第一個(gè)未寫入數(shù)據(jù)包存儲(chǔ)地址的行,將寫數(shù)據(jù)指針移位至該行的第J列,寫入該數(shù)據(jù)包的存儲(chǔ)地址,并占預(yù)設(shè)固定位數(shù),將該行對(duì)應(yīng)該數(shù)據(jù)包的監(jiān)聽時(shí)刻。
15.一種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的方法,其特征在于,包括: 獲取應(yīng)用如權(quán)利要求1到7任意一項(xiàng)所述方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng); 獲取對(duì)數(shù)據(jù)包的讀取指令; 解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻; 根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址; 根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
16.根據(jù)權(quán)利要求15所述的方法,其特征在于,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)中均記錄了該地址記錄區(qū)之后的下一地址記錄區(qū)的地址; 所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址包括: 根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址; 根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,判斷是否結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀?。? 如果否,且該當(dāng)前地址記錄區(qū)記錄了下一地址記錄區(qū)的地址,根據(jù)該當(dāng)前地址記錄區(qū)記錄的下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),返回到根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
17.根據(jù)權(quán)利要求16所述的方法,其特征在于,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)的第一預(yù)設(shè)位置中均記錄了下一地址記錄區(qū)標(biāo)志,每個(gè)非最后一個(gè)地址記錄區(qū)的第二預(yù)設(shè)位置中均記錄了該地址記錄區(qū)之后的下一個(gè)地址記錄區(qū)的地址,每個(gè)非最后一個(gè)地址記錄區(qū)的第三預(yù)設(shè)位置中均記錄了該地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù); 所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址包括: 根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址; 如果還未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取,判斷該當(dāng)前地址記錄區(qū)中第一預(yù)設(shè)位置是否存在下一地址記錄區(qū)標(biāo)志; 如果存在,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一地址記錄區(qū)的地址,根據(jù)該下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),繼續(xù)執(zhí)行所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
18.根據(jù)權(quán)利要求15-17任一項(xiàng)所述的方法,其特征在于,所述地址記錄區(qū)為二維索引表,其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻; 所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址為: 根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址。
19.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述對(duì)數(shù)據(jù)包的讀取指令為:每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)讀取出與一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的在第二預(yù)設(shè)數(shù)量個(gè)時(shí)刻內(nèi)的數(shù)據(jù)包; 所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址包括:在二維索引表中,將讀數(shù)據(jù)指針每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)偏移第二預(yù)設(shè)數(shù)量個(gè)行,每偏移一行時(shí),從該行與所述一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的列中讀取出數(shù)據(jù)包存儲(chǔ)地址,如果所述讀數(shù)據(jù)指針偏移至非最后一個(gè)二維索引表的表尾,確定未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀??; 所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包包括:在讀取出一個(gè)數(shù)據(jù)包存儲(chǔ)地址的同時(shí),尋址到該數(shù)據(jù)包存儲(chǔ)地址,從中讀取出數(shù)據(jù)包。
20.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述對(duì)數(shù)據(jù)包的讀取指令為:讀取與任一監(jiān)聽時(shí)刻對(duì)應(yīng)、與任一服務(wù)類型對(duì)應(yīng)、且排序位置在所有數(shù)據(jù)包中指定百分比位置的某個(gè)數(shù)據(jù)包; 所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址包括:將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù)的初始值;如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表,通過所述遍歷及根據(jù)所述當(dāng)前二維索引表中保存的每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,計(jì)算當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù); 如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前二維索引表的第三預(yù)設(shè)位置讀取出當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),從該當(dāng)前二維索引表的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到所述如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表的步驟; 將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置臨時(shí)計(jì)數(shù)值的初值; 假定該某個(gè)數(shù)據(jù)包為第X個(gè)數(shù)據(jù)包,根據(jù)X等于所述指定百分比乘以所述數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),計(jì)算出X值; 如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值,判斷所述臨時(shí)計(jì)數(shù)值是否大于或等于所述X值,如果否且當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值的步驟; 根據(jù)所述臨時(shí)計(jì)數(shù)值與X值的差值、每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,查詢出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在當(dāng)前二維索引表中的位置; 將讀數(shù)據(jù)指針移位至該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在二維索引表中的位置,讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址,并且確定結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取。
21.根據(jù)權(quán)利要求18所述的方法,其特征在于,所述對(duì)數(shù)據(jù)包的讀取指令為:讀取指定服務(wù)類型的第X個(gè)數(shù)據(jù)包; 所述根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址包括: 假定所述指定服務(wù)類型對(duì)應(yīng)的列為J列,假定所述當(dāng)前二維索引表的列共對(duì)應(yīng)SN個(gè)服務(wù)類型,假定每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)D ; 設(shè)置N=I及指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)=O ; 判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位; 如果不存在且當(dāng)前二維索引表的最后一行的最后一個(gè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,設(shè)置N=l,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟; 如果存在,判斷當(dāng)前二維索引表的第D* (N*SN+J)位是否存在特殊標(biāo)記,其中所述特殊標(biāo)記用于標(biāo)識(shí)二維索引表中未寫入數(shù)據(jù)包存儲(chǔ)地址的位置,如果不存在,指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)加1,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)小于X值,N=N+1,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)等于X值,將讀數(shù)據(jù)指針移位至當(dāng)前索引表的該第D* (N*SN+J)位,從中讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址。
22.—種監(jiān)控環(huán)境下讀取數(shù)據(jù)包的裝置,其特征在于,包括: 獲取文件單元:用于獲取應(yīng)用如權(quán)利要求1到7任意一項(xiàng)所述方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,所述地址記錄區(qū)用于保存數(shù)據(jù)包存儲(chǔ)地址,其中,每個(gè)數(shù)據(jù)包存儲(chǔ)地址保存的位置均與一個(gè)服務(wù)類型對(duì)應(yīng)且與一個(gè)監(jiān)聽時(shí)刻對(duì)應(yīng); 獲取指令單元:用于獲取對(duì)數(shù)據(jù)包的讀取指令; 解析單元:用于解析對(duì)數(shù)據(jù)包的讀取指令以獲取待讀取數(shù)據(jù)包的服務(wù)類型及待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻; 第一讀取單元:用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址; 第二讀取單元:用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從所述數(shù)據(jù)包存儲(chǔ)地址中讀取出數(shù)據(jù)包。
23.根據(jù)權(quán)利要求22所述的裝置,其特征在于,所述獲取文件單元:用于獲取應(yīng)用如權(quán)利要求I到7任意一項(xiàng)所述方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)中均記錄了該地址記錄區(qū)之后的下一地址記錄區(qū)的地址; 所述第一讀取單元:用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,判斷是否結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取;如果否,且該當(dāng)前地址記錄區(qū)記錄了下一地址記錄區(qū)的地址,根據(jù)該當(dāng)前地址記錄區(qū)記錄的下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),返回到根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
24.根據(jù)權(quán)利要求23所述的裝置,其特征在于,所述獲取文件單元:用于獲取應(yīng)用如權(quán)利要求I到7任意一項(xiàng)所述方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,當(dāng)所述地址記錄區(qū)為多個(gè)時(shí),每個(gè)非最后一個(gè)地址記錄區(qū)的第一預(yù)設(shè)位置中均記錄了下一地址記錄區(qū)標(biāo)志,每個(gè)非最后一個(gè)地址記錄區(qū)的第二預(yù)設(shè)位置中均記錄了該地址記錄區(qū)之后的下一個(gè)地址記錄區(qū)的地址,每個(gè)非最后一個(gè)地址記錄區(qū)的第三預(yù)設(shè)位置中均記錄了該地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù); 所述第一讀取單元:用于根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址;如果還未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取,判斷該當(dāng)前地址記錄區(qū)中第一預(yù)設(shè)位置是否存在下一地址記錄區(qū)標(biāo)志;如果存在,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一地址記錄區(qū)的地址,根據(jù)該下一地址記錄區(qū)的地址,查詢出下一地址記錄區(qū),將該下一地址記錄區(qū)作為當(dāng)前地址記錄區(qū),繼續(xù)執(zhí)行所述根據(jù)該對(duì)數(shù)據(jù)包的讀取指令,從當(dāng)前地址記錄區(qū)保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)且與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址的步驟。
25.根據(jù)權(quán)利要求22-24任一項(xiàng)所述的裝置,其特征在于,所述獲取文件單元:用于獲取應(yīng)用如權(quán)利要求1到7任意一項(xiàng)所述方法對(duì)數(shù)據(jù)包進(jìn)行存儲(chǔ)得到的文件存儲(chǔ)區(qū),其中,所述文件存儲(chǔ)區(qū)中保存了地址記錄區(qū)和數(shù)據(jù)包,其中所述地址記錄區(qū)為二維索引表,其中一列對(duì)應(yīng)一個(gè)服務(wù)類型,一行對(duì)應(yīng)一個(gè)監(jiān)聽時(shí)刻; 所述第一讀取單元:用于根據(jù)對(duì)數(shù)據(jù)包的讀取指令,從二維索引表保存的數(shù)據(jù)包存儲(chǔ)地址中,讀取出列與待讀取數(shù)據(jù)包的服務(wù)類型對(duì)應(yīng)、且行與待讀取數(shù)據(jù)包的監(jiān)聽時(shí)刻對(duì)應(yīng)的位置所保存的數(shù)據(jù)包存儲(chǔ)地址。
26.根據(jù)權(quán)利要求25所述的裝置,其特征在于,所述獲取指令單元:用于獲取對(duì)數(shù)據(jù)包的讀取指令,所述對(duì)數(shù)據(jù)包的讀取指令為:每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)讀取出與一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的在第二預(yù)設(shè)數(shù)量個(gè)時(shí)刻內(nèi)的數(shù)據(jù)包; 所述第一讀取單元:用于在二維索引表中,將讀數(shù)據(jù)指針每第一預(yù)設(shè)時(shí)長(zhǎng)內(nèi)偏移第二預(yù)設(shè)數(shù)量個(gè)行,每偏移一行時(shí),從該行與所述一個(gè)或一個(gè)以上指定服務(wù)類型對(duì)應(yīng)的列中讀取出數(shù)據(jù)包存儲(chǔ)地址,如果所述讀數(shù)據(jù)指針偏移至非最后一個(gè)二維索引表的表尾,確定未結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取; 所述第二讀取單元:用于在讀取出一個(gè)數(shù)據(jù)包存儲(chǔ)地址的同時(shí),尋址到該數(shù)據(jù)包存儲(chǔ)地址,從中讀取出數(shù)據(jù)包。
27.根據(jù)權(quán)利要求25所述的裝置,其特征在于,所述獲取指令單元:用于獲取對(duì)數(shù)據(jù)包的讀取指令,所述對(duì)數(shù)據(jù)包的讀取指令為:讀取與任一監(jiān)聽時(shí)刻對(duì)應(yīng)、與任一服務(wù)類型對(duì)應(yīng)、且排序位置在所有數(shù)據(jù)包中指定百分比位置的某個(gè)數(shù)據(jù)包; 所述第一讀取單元:用于將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù)的初始值;如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表,通過所述遍歷及根據(jù)所述當(dāng)前二維索引表中保存的每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,計(jì)算當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù);如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前二維索引表的第三預(yù)設(shè)位置讀取出當(dāng)前二維索引表的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),累計(jì)入數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),從該當(dāng)前二維索引表的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到所述如果當(dāng)前二維索引表的第一預(yù)設(shè)位置不存在下一地址記錄區(qū)標(biāo)志,遍歷當(dāng)前二維索引表的步驟;將第一個(gè)二維索引表作為當(dāng)前二維索引表,設(shè)置臨時(shí)計(jì)數(shù)值的初值;假定該某個(gè)數(shù)據(jù)包為第X個(gè)數(shù)據(jù)包,根據(jù)X等于所述指定百分比乘以所述數(shù)據(jù)包存儲(chǔ)地址的總個(gè)數(shù),計(jì)算出X值;如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值,判斷所述臨時(shí)計(jì)數(shù)值是否大于或等于所述X值,如果否且當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,返回到如果當(dāng)前二維索引表的第一預(yù)設(shè)位置存在下一地址記錄區(qū)標(biāo)志,從當(dāng)前二維索引表的第三預(yù)設(shè)位置中讀取出當(dāng)前二維索引表中保存的數(shù)據(jù)包存儲(chǔ)地址的個(gè)數(shù),將該讀取出的個(gè)數(shù)累計(jì)入所述臨時(shí)計(jì)數(shù)值的步驟;根據(jù)所述臨時(shí)計(jì)數(shù)值與X值的差值、每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)、且未寫入數(shù)據(jù)包存儲(chǔ)地址的位置以特殊標(biāo)記占位,查詢出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在當(dāng)前二維索引表中的位置;將讀數(shù)據(jù)指針移位至該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址在二維索引表中的位置,讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址,并且確定結(jié)束對(duì)數(shù)據(jù)包存儲(chǔ)地址的讀取。
28.根據(jù)權(quán)利要求25所述的裝置,其特征在于,所述所述獲取指令單元:用于獲取對(duì)數(shù)據(jù)包的讀取指令,所述對(duì)數(shù)據(jù)包的讀取指令為:讀取指定服務(wù)類型的第X個(gè)數(shù)據(jù)包; 所述第一讀取單元:用于假定所述指定服務(wù)類型對(duì)應(yīng)的列為J列,假定所述當(dāng)前二維索引表的列共對(duì)應(yīng)SN個(gè)服務(wù)類型,假定每個(gè)數(shù)據(jù)包存儲(chǔ)地址占預(yù)設(shè)固定位數(shù)D ;設(shè)置N=I及指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)=O ;判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位;如果不存在且當(dāng)前二維索引表的最后一行的最后一個(gè)位置存在下一地址記錄區(qū)標(biāo)志,從該當(dāng)前地址記錄區(qū)的第二預(yù)設(shè)位置讀取出下一二維索引表的地址,根據(jù)該下一二維索引表的地址,查詢出下一二維索引表,將該下一二維索引表作為當(dāng)前二維索引表,設(shè)置N=l,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟;如果存在,判斷當(dāng)前二維索引表的第D* (N*SN+J)位是否存在特殊標(biāo)記,其中所述特殊標(biāo)記用于標(biāo)識(shí)二維索引表中未寫入數(shù)據(jù)包存儲(chǔ)地址的位置,如果不存在,指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)加1,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)小于X值,N=N+1,返回到判斷當(dāng)前二維索引表是否存在第D* (N*SN+J)位的步驟,如果所述指定數(shù)據(jù)包存儲(chǔ)地址個(gè)數(shù)等于X值,將讀數(shù)據(jù)指針移位至當(dāng)前索引表的該第D*(N*SN+J)位,從中讀取出該第X個(gè)數(shù)據(jù)包存儲(chǔ)地址。
【文檔編號(hào)】G06F17/30GK104253713SQ201310257503
【公開日】2014年12月31日 申請(qǐng)日期:2013年6月25日 優(yōu)先權(quán)日:2013年6月25日
【發(fā)明者】盧林鋒 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司