欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法

文檔序號(hào):9690781閱讀:804來(lái)源:國(guó)知局
自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,更具體地說(shuō),涉及一種自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,基于計(jì)算機(jī)網(wǎng)絡(luò)的應(yīng)用層出不窮,應(yīng)用數(shù)據(jù)采取何種協(xié)議存在于網(wǎng)絡(luò)上是所有網(wǎng)絡(luò)應(yīng)用都需要考慮的問(wèn)題。自定義結(jié)構(gòu)體二進(jìn)制協(xié)議便是其中經(jīng)典的一種,它尤其是在客戶(hù)/服務(wù)器模型的網(wǎng)絡(luò)應(yīng)用中得到廣泛應(yīng)用。在現(xiàn)有技術(shù)中,通常是直接將結(jié)構(gòu)體所占內(nèi)存空間的內(nèi)容作為數(shù)據(jù)源向網(wǎng)絡(luò)發(fā)送,接收方直接以相同結(jié)構(gòu)體強(qiáng)制還原所收到數(shù)據(jù)。這樣的數(shù)據(jù)傳輸方法使用起來(lái)很方便。但這種直接以結(jié)構(gòu)體原始內(nèi)容作為傳輸內(nèi)容的通信方式,存在網(wǎng)絡(luò)帶寬浪費(fèi)嚴(yán)重的問(wèn)題,如果要通過(guò)結(jié)構(gòu)體傳輸字符串信息,則結(jié)構(gòu)體的字符數(shù)組需要按最大字符串要求來(lái)定義這個(gè)字符串?dāng)?shù)組,而不能根據(jù)實(shí)際需要?jiǎng)討B(tài)決定字符串信息以多大空間來(lái)傳輸。而事實(shí)上很多情況下,實(shí)際的字符串?dāng)?shù)據(jù),則往往小于或大大小于這個(gè)定段定義時(shí)的空間大小。這導(dǎo)致存儲(chǔ)空間的嚴(yán)重浪費(fèi),這樣的數(shù)據(jù)在網(wǎng)絡(luò)上傳輸,也嚴(yán)重浪費(fèi)了網(wǎng)絡(luò)帶寬。此外,這樣的數(shù)據(jù)傳輸?shù)陌踩圆桓撸驗(yàn)榻Y(jié)構(gòu)體協(xié)議,每種協(xié)議大小是固定的,黑客很容易對(duì)這種協(xié)議數(shù)據(jù)包進(jìn)行分析,進(jìn)而進(jìn)行攻擊。

【發(fā)明內(nèi)容】

[0003]本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述浪費(fèi)嚴(yán)重、不安全的缺陷,提供一種節(jié)約網(wǎng)絡(luò)帶寬、較為安全的自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法。
[0004]本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:構(gòu)造一種自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送方法,包括如下步驟:
A)確認(rèn)本次需要傳輸?shù)脑紨?shù)據(jù)所在的第一存儲(chǔ)區(qū)域;
B)在所述第一存儲(chǔ)區(qū)域中按數(shù)據(jù)的存儲(chǔ)順序,依次取得該存儲(chǔ)區(qū)域中的各數(shù)據(jù)段,將各數(shù)據(jù)段中的數(shù)據(jù)分別轉(zhuǎn)換為包括數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元的第一格式數(shù)據(jù),并將得到的第一格式數(shù)據(jù)分別按其得到順序存儲(chǔ)在第二存儲(chǔ)區(qū)域;
C)依次讀取多個(gè)所述第二存儲(chǔ)區(qū)域中的第一格式數(shù)據(jù),生成數(shù)據(jù)包并發(fā)送;所述數(shù)據(jù)包包括包頭和包數(shù)據(jù),其包頭中設(shè)置有表示本數(shù)據(jù)包中第一格式數(shù)據(jù)類(lèi)型及順序的第一識(shí)別碼;
其中,所述數(shù)據(jù)描述單元用于指示該數(shù)據(jù)段數(shù)據(jù)的類(lèi)型或結(jié)構(gòu)類(lèi)型,所述數(shù)據(jù)內(nèi)容是該數(shù)據(jù)段中原始數(shù)據(jù)的實(shí)際值轉(zhuǎn)換而得的數(shù)據(jù)或者是該數(shù)據(jù)段中原始數(shù)據(jù)的實(shí)際值或字符串。
[0005]更進(jìn)一步地,所述步驟C)中進(jìn)一步包括:
Cl)取得多個(gè)第一格式數(shù)據(jù),使所述多個(gè)第一格式數(shù)據(jù)的長(zhǎng)度總和是設(shè)定的長(zhǎng)度;
C2)按照所述多個(gè)第一格式數(shù)據(jù)的順序及其數(shù)據(jù)類(lèi)型,生成第一識(shí)別碼,將所述第一識(shí)別碼放入所述數(shù)據(jù)包的包頭中;
C3)按照讀取順序排列所述多個(gè)第一格式數(shù)據(jù),得到所述數(shù)據(jù)包的數(shù)據(jù)內(nèi)容。
[0006]更進(jìn)一步地,所述步驟B)中通過(guò)判斷當(dāng)前數(shù)據(jù)段的數(shù)據(jù)類(lèi)型,依據(jù)判斷結(jié)果,分別得到該數(shù)據(jù)段的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,從而得到該數(shù)據(jù)段的第一格式數(shù)據(jù);
其中,所述數(shù)據(jù)描述單元通過(guò)讀取該數(shù)據(jù)段的原始數(shù)據(jù)的指定部分得到;根據(jù)該數(shù)據(jù)段的數(shù)據(jù)類(lèi)型的不同,所述數(shù)據(jù)描述單元包括數(shù)據(jù)類(lèi)型描述部分或者所述數(shù)據(jù)描述單元包括數(shù)據(jù)類(lèi)型描述部分和數(shù)據(jù)長(zhǎng)度描述部分。
[0007]更進(jìn)一步地,所述步驟B)中,當(dāng)所述數(shù)據(jù)段中為基本數(shù)據(jù)類(lèi)型時(shí),取得該基本數(shù)據(jù)中的有效數(shù)字的絕對(duì)值,將其與依次與多個(gè)設(shè)定值比較,得到其第一格式數(shù)據(jù)中的數(shù)據(jù)描述單元、數(shù)據(jù)內(nèi)容單元的數(shù)據(jù)以及該數(shù)據(jù)的長(zhǎng)度;
當(dāng)所述數(shù)據(jù)段為數(shù)組、結(jié)構(gòu)體或容器時(shí),其數(shù)據(jù)描述單元通過(guò)讀取當(dāng)前數(shù)據(jù)段中的設(shè)定內(nèi)容取得,其轉(zhuǎn)換后的數(shù)據(jù)內(nèi)容為該數(shù)據(jù)段中原始數(shù)據(jù)的數(shù)據(jù)內(nèi)容,其數(shù)據(jù)長(zhǎng)度為第一存儲(chǔ)區(qū)域中該原始數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度。
[0008]更進(jìn)一步地,所述步驟B)中進(jìn)一步包括:
BI)讀取所述第一存儲(chǔ)區(qū)域中的一個(gè)數(shù)據(jù)段;
B2)判斷所述數(shù)據(jù)段是否為基本數(shù)據(jù)類(lèi)型,如是,執(zhí)行基本數(shù)據(jù)轉(zhuǎn)換,依次排列得到的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,執(zhí)行步驟B3);
B3)判斷所述數(shù)據(jù)段是否為數(shù)組或結(jié)構(gòu)體對(duì)象,如是,執(zhí)行數(shù)組或結(jié)構(gòu)體對(duì)象轉(zhuǎn)換,依次排列得到的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,執(zhí)行步驟B4);
B4)判斷所述數(shù)據(jù)段是否為容器類(lèi)型數(shù)據(jù),如是,執(zhí)行容器對(duì)象轉(zhuǎn)換,依次排列得到的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,則判斷當(dāng)前數(shù)據(jù)段為字符串,依次排列取得的數(shù)據(jù)描述單元和原始數(shù)據(jù)中的字符串部分,得到該數(shù)據(jù)段的第一格式數(shù)據(jù)。
[0009]更進(jìn)一步地,所述步驟B2)中,執(zhí)行基本數(shù)據(jù)轉(zhuǎn)換包括:
B21)讀取數(shù)據(jù)段中設(shè)定位置,得到該數(shù)據(jù)段中數(shù)據(jù)的類(lèi)型,并判斷數(shù)據(jù)段中的原始數(shù)據(jù)是否為零,如是,對(duì)數(shù)據(jù)描述單元中的數(shù)據(jù)類(lèi)型做出第一類(lèi)標(biāo)記,并去掉該數(shù)據(jù)段的數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,執(zhí)行下一步驟;
B22)判斷所述原始數(shù)據(jù)取反并加I是否仍等于該原始數(shù)據(jù)本身,如是,對(duì)數(shù)據(jù)描述單元中的數(shù)據(jù)類(lèi)型做出第二類(lèi)標(biāo)記,并去掉該數(shù)據(jù)段的數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);否則,執(zhí)行下一步驟;
B23)取得所述數(shù)據(jù)段原始數(shù)據(jù)的絕對(duì)值,將其逐個(gè)與設(shè)定的值比較,得到該數(shù)據(jù)段的數(shù)據(jù)內(nèi)容單元的長(zhǎng)度,將上述步驟中得到的數(shù)據(jù)類(lèi)型和所述原始數(shù)據(jù)的有效值分別放入所述數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù)。
[0010]更進(jìn)一步地,所述步驟B3)中,數(shù)據(jù)段中的數(shù)據(jù)是數(shù)組或結(jié)構(gòu)體類(lèi)型,其數(shù)據(jù)描述單元包括一個(gè)字節(jié)的、由讀取該數(shù)據(jù)段中指定位置而得到的數(shù)據(jù)類(lèi)型描述部分和長(zhǎng)度變化的數(shù)據(jù)長(zhǎng)度描述部分;所述數(shù)據(jù)長(zhǎng)度描述部分通過(guò)對(duì)該數(shù)據(jù)段中組成該數(shù)組或結(jié)構(gòu)體的所有數(shù)據(jù)長(zhǎng)度求和而得;其數(shù)據(jù)內(nèi)容單元中的數(shù)據(jù)是該數(shù)據(jù)段中所有數(shù)組或結(jié)構(gòu)體的原始數(shù)據(jù); 所述步驟B4)中,數(shù)據(jù)段中的數(shù)據(jù)是容器類(lèi)型數(shù)據(jù),其數(shù)據(jù)描述單元包括一個(gè)字節(jié)的數(shù)據(jù)類(lèi)型描述部分、一個(gè)字節(jié)的容器對(duì)象類(lèi)型描述部分和長(zhǎng)度變化的數(shù)據(jù)長(zhǎng)度描述部分;所述容器對(duì)象類(lèi)型描述部分通過(guò)讀取該數(shù)據(jù)段中原始數(shù)據(jù)的指定位置而得;所述數(shù)據(jù)長(zhǎng)度描述部分通過(guò)對(duì)該數(shù)據(jù)段中組成該容器的所有數(shù)據(jù)長(zhǎng)度求和而得;其數(shù)據(jù)內(nèi)容單元中的數(shù)據(jù)是該數(shù)據(jù)段中該容器內(nèi)數(shù)據(jù)的原始數(shù)據(jù)。
[0011]本發(fā)明還涉及一種接收使用上述方法發(fā)送數(shù)據(jù)的數(shù)據(jù)接收方法,包括如下步驟:包括如下步驟:
M)接收傳來(lái)的數(shù)據(jù)包,取得其包頭中表示本數(shù)據(jù)包中第一格式數(shù)據(jù)的排列順序及數(shù)據(jù)類(lèi)型的第一識(shí)別碼,得到本數(shù)據(jù)包中第一格式數(shù)據(jù)的數(shù)據(jù)類(lèi)型及其排列順序;
N)依次取得該數(shù)據(jù)包中的第一格式數(shù)據(jù),按照數(shù)據(jù)描述單元的內(nèi)容將其數(shù)值內(nèi)容單元轉(zhuǎn)換為原始數(shù)據(jù);
O)逐個(gè)存儲(chǔ)由該數(shù)據(jù)包中得到的原始數(shù)據(jù)。
[0012]更進(jìn)一步地,所述步驟M)中進(jìn)一步包括:取得該數(shù)據(jù)包中的第一識(shí)別碼,查表得到該識(shí)別碼對(duì)應(yīng)的第一格式數(shù)據(jù)的數(shù)據(jù)類(lèi)型及排列順序,如該第一識(shí)別碼不在事先設(shè)定的表中,判斷該數(shù)據(jù)包不可用,拋棄該數(shù)據(jù)包。
[0013]更進(jìn)一步地,所述步驟N)中,取得一個(gè)第一格式數(shù)據(jù)的數(shù)據(jù)類(lèi)型單元后,判斷其數(shù)據(jù)類(lèi)型,按照對(duì)應(yīng)的數(shù)據(jù)類(lèi)型處理該第一格式數(shù)據(jù)中的數(shù)據(jù)內(nèi)容部分,將其轉(zhuǎn)換為原始數(shù)據(jù);
其中,所述數(shù)據(jù)類(lèi)型包括基本數(shù)據(jù)類(lèi)型、數(shù)組或結(jié)構(gòu)體對(duì)象、容器類(lèi)型數(shù)據(jù)或字符串。
[0014]實(shí)施本發(fā)明的自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法,具有以下有益效果:由于在傳輸之前對(duì)自定義
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永清县| 涞水县| 射洪县| 寻乌县| 姜堰市| 米脂县| 莎车县| 姚安县| 朝阳区| 彭阳县| 五华县| 庆元县| 河北省| 赤壁市| 阳泉市| 泗洪县| 虞城县| 赫章县| 甘肃省| 哈密市| 陈巴尔虎旗| 渑池县| 新民市| 铜川市| 保德县| 商城县| 大竹县| 南昌县| 锡林浩特市| 日土县| 福安市| 山丹县| 漳平市| 云浮市| 庄河市| 顺平县| 通许县| 鄂托克旗| 海宁市| 安达市| 泽普县|