国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

      文檔序號(hào):9690781閱讀:789來源:國知局
      自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法
      【技術(shù)領(lǐng)域】
      [0001 ]本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,更具體地說,涉及一種自定義二進(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)用都需要考慮的問題。自定義結(jié)構(gòu)體二進(jìn)制協(xié)議便是其中經(jīng)典的一種,它尤其是在客戶/服務(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ù)傳輸方法使用起來很方便。但這種直接以結(jié)構(gòu)體原始內(nèi)容作為傳輸內(nèi)容的通信方式,存在網(wǎng)絡(luò)帶寬浪費(fèi)嚴(yán)重的問題,如果要通過結(jié)構(gòu)體傳輸字符串信息,則結(jié)構(gòu)體的字符數(shù)組需要按最大字符串要求來定義這個(gè)字符串?dāng)?shù)組,而不能根據(jù)實(shí)際需要?jiǎng)討B(tà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é)議大小是固定的,黑客很容易對這種協(xié)議數(shù)據(jù)包進(jìn)行分析,進(jìn)而進(jìn)行攻擊。

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

      [0003]本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述浪費(fèi)嚴(yán)重、不安全的缺陷,提供一種節(jié)約網(wǎng)絡(luò)帶寬、較為安全的自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法。
      [0004]本發(fā)明解決其技術(shù)問題所采用的技術(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ù)類型及順序的第一識(shí)別碼;
      其中,所述數(shù)據(jù)描述單元用于指示該數(shù)據(jù)段數(shù)據(jù)的類型或結(jié)構(gòu)類型,所述數(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ù)的長度總和是設(shè)定的長度;
      C2)按照所述多個(gè)第一格式數(shù)據(jù)的順序及其數(shù)據(jù)類型,生成第一識(shí)別碼,將所述第一識(shí)別碼放入所述數(shù)據(jù)包的包頭中;
      C3)按照讀取順序排列所述多個(gè)第一格式數(shù)據(jù),得到所述數(shù)據(jù)包的數(shù)據(jù)內(nèi)容。
      [0006]更進(jìn)一步地,所述步驟B)中通過判斷當(dāng)前數(shù)據(jù)段的數(shù)據(jù)類型,依據(jù)判斷結(jié)果,分別得到該數(shù)據(jù)段的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,從而得到該數(shù)據(jù)段的第一格式數(shù)據(jù);
      其中,所述數(shù)據(jù)描述單元通過讀取該數(shù)據(jù)段的原始數(shù)據(jù)的指定部分得到;根據(jù)該數(shù)據(jù)段的數(shù)據(jù)類型的不同,所述數(shù)據(jù)描述單元包括數(shù)據(jù)類型描述部分或者所述數(shù)據(jù)描述單元包括數(shù)據(jù)類型描述部分和數(shù)據(jù)長度描述部分。
      [0007]更進(jìn)一步地,所述步驟B)中,當(dāng)所述數(shù)據(jù)段中為基本數(shù)據(jù)類型時(shí),取得該基本數(shù)據(jù)中的有效數(shù)字的絕對值,將其與依次與多個(gè)設(shè)定值比較,得到其第一格式數(shù)據(jù)中的數(shù)據(jù)描述單元、數(shù)據(jù)內(nèi)容單元的數(shù)據(jù)以及該數(shù)據(jù)的長度;
      當(dāng)所述數(shù)據(jù)段為數(shù)組、結(jié)構(gòu)體或容器時(shí),其數(shù)據(jù)描述單元通過讀取當(dāng)前數(shù)據(jù)段中的設(shè)定內(nèi)容取得,其轉(zhuǎn)換后的數(shù)據(jù)內(nèi)容為該數(shù)據(jù)段中原始數(shù)據(jù)的數(shù)據(jù)內(nèi)容,其數(shù)據(jù)長度為第一存儲(chǔ)區(qū)域中該原始數(shù)據(jù)的數(shù)據(jù)長度。
      [0008]更進(jìn)一步地,所述步驟B)中進(jìn)一步包括:
      BI)讀取所述第一存儲(chǔ)區(qū)域中的一個(gè)數(shù)據(jù)段;
      B2)判斷所述數(shù)據(jù)段是否為基本數(shù)據(jù)類型,如是,執(zhí)行基本數(shù)據(jù)轉(zhuǎn)換,依次排列得到的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,執(zhí)行步驟B3);
      B3)判斷所述數(shù)據(jù)段是否為數(shù)組或結(jié)構(gòu)體對象,如是,執(zhí)行數(shù)組或結(jié)構(gòu)體對象轉(zhuǎn)換,依次排列得到的數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,執(zhí)行步驟B4);
      B4)判斷所述數(shù)據(jù)段是否為容器類型數(shù)據(jù),如是,執(zhí)行容器對象轉(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ù)的類型,并判斷數(shù)據(jù)段中的原始數(shù)據(jù)是否為零,如是,對數(shù)據(jù)描述單元中的數(shù)據(jù)類型做出第一類標(biāo)記,并去掉該數(shù)據(jù)段的數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);如否,執(zhí)行下一步驟;
      B22)判斷所述原始數(shù)據(jù)取反并加I是否仍等于該原始數(shù)據(jù)本身,如是,對數(shù)據(jù)描述單元中的數(shù)據(jù)類型做出第二類標(biāo)記,并去掉該數(shù)據(jù)段的數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù);否則,執(zhí)行下一步驟;
      B23)取得所述數(shù)據(jù)段原始數(shù)據(jù)的絕對值,將其逐個(gè)與設(shè)定的值比較,得到該數(shù)據(jù)段的數(shù)據(jù)內(nèi)容單元的長度,將上述步驟中得到的數(shù)據(jù)類型和所述原始數(shù)據(jù)的有效值分別放入所述數(shù)據(jù)描述單元和數(shù)據(jù)內(nèi)容單元,得到該數(shù)據(jù)段的第一格式數(shù)據(jù)。
      [0010]更進(jìn)一步地,所述步驟B3)中,數(shù)據(jù)段中的數(shù)據(jù)是數(shù)組或結(jié)構(gòu)體類型,其數(shù)據(jù)描述單元包括一個(gè)字節(jié)的、由讀取該數(shù)據(jù)段中指定位置而得到的數(shù)據(jù)類型描述部分和長度變化的數(shù)據(jù)長度描述部分;所述數(shù)據(jù)長度描述部分通過對該數(shù)據(jù)段中組成該數(shù)組或結(jié)構(gòu)體的所有數(shù)據(jù)長度求和而得;其數(shù)據(jù)內(nèi)容單元中的數(shù)據(jù)是該數(shù)據(jù)段中所有數(shù)組或結(jié)構(gòu)體的原始數(shù)據(jù); 所述步驟B4)中,數(shù)據(jù)段中的數(shù)據(jù)是容器類型數(shù)據(jù),其數(shù)據(jù)描述單元包括一個(gè)字節(jié)的數(shù)據(jù)類型描述部分、一個(gè)字節(jié)的容器對象類型描述部分和長度變化的數(shù)據(jù)長度描述部分;所述容器對象類型描述部分通過讀取該數(shù)據(jù)段中原始數(shù)據(jù)的指定位置而得;所述數(shù)據(jù)長度描述部分通過對該數(shù)據(jù)段中組成該容器的所有數(shù)據(jù)長度求和而得;其數(shù)據(jù)內(nèi)容單元中的數(shù)據(jù)是該數(shù)據(jù)段中該容器內(nèi)數(shù)據(jù)的原始數(shù)據(jù)。
      [0011]本發(fā)明還涉及一種接收使用上述方法發(fā)送數(shù)據(jù)的數(shù)據(jù)接收方法,包括如下步驟:包括如下步驟:
      M)接收傳來的數(shù)據(jù)包,取得其包頭中表示本數(shù)據(jù)包中第一格式數(shù)據(jù)的排列順序及數(shù)據(jù)類型的第一識(shí)別碼,得到本數(shù)據(jù)包中第一格式數(shù)據(jù)的數(shù)據(jù)類型及其排列順序;
      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í)別碼對應(yīng)的第一格式數(shù)據(jù)的數(shù)據(jù)類型及排列順序,如該第一識(shí)別碼不在事先設(shè)定的表中,判斷該數(shù)據(jù)包不可用,拋棄該數(shù)據(jù)包。
      [0013]更進(jìn)一步地,所述步驟N)中,取得一個(gè)第一格式數(shù)據(jù)的數(shù)據(jù)類型單元后,判斷其數(shù)據(jù)類型,按照對應(yīng)的數(shù)據(jù)類型處理該第一格式數(shù)據(jù)中的數(shù)據(jù)內(nèi)容部分,將其轉(zhuǎn)換為原始數(shù)據(jù);
      其中,所述數(shù)據(jù)類型包括基本數(shù)據(jù)類型、數(shù)組或結(jié)構(gòu)體對象、容器類型數(shù)據(jù)或字符串。
      [0014]實(shí)施本發(fā)明的自定義二進(jìn)制結(jié)構(gòu)化協(xié)議數(shù)據(jù)的發(fā)送和接收方法,具有以下有益效果:由于在傳輸之前對自定義
      當(dāng)前第1頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1