国产精品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>

      一種基于Java語言的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法與流程

      文檔序號(hào):12376817閱讀:1410來源:國(guó)知局

      本發(fā)明涉及網(wǎng)絡(luò)通訊領(lǐng)域,特別涉及一種基于Java語言的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法。



      背景技術(shù):

      計(jì)算機(jī)系統(tǒng)和網(wǎng)絡(luò)的大量普及使用使全球跨入了信息化時(shí)代。但是,正由于現(xiàn)代社會(huì)中幾乎一切都在“計(jì)算機(jī)化”,如經(jīng)濟(jì)活動(dòng)(生產(chǎn)、流通、交換、消費(fèi)等)過程中的管理都已經(jīng)完成基于計(jì)算機(jī)系統(tǒng)在運(yùn)行,而計(jì)算機(jī)系統(tǒng)的核心是“軟件”,也就是說都是基于“軟件(程序)”在運(yùn)行,但從另一角度出發(fā)來看軟件與軟件之間需要交流那么就得通過龐大的“網(wǎng)絡(luò)”進(jìn)行交互?!熬W(wǎng)絡(luò)”中的語言就像我們平常在生活中一樣,提前擬定了一份協(xié)議,什么樣的詞語組合代表著什么樣的意思,“網(wǎng)絡(luò)”中的語言也不例外,在這里我們要提到的就是一種網(wǎng)絡(luò)語言(網(wǎng)絡(luò)數(shù)通訊據(jù)包)解析的方法。從最初傳統(tǒng)的一對(duì)一關(guān)系,隨著時(shí)間的變化,技術(shù)的更新改革,變化為現(xiàn)在的一對(duì)多關(guān)系,是技術(shù)領(lǐng)域上的一大里程碑。這種解析方法的好處在于明確每一份擬定的協(xié)議特有的解析方法或函數(shù),如果程序解析模塊出錯(cuò),會(huì)很容易定位或者修改錯(cuò)誤,與其他協(xié)議互不相關(guān),但相對(duì)的對(duì)于多分協(xié)議需要寫N份協(xié)議的解析方法或者函數(shù),對(duì)于后期的維護(hù)、與擴(kuò)展成本也是相當(dāng)?shù)母摺?/p>



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

      為了克服現(xiàn)有技術(shù)的上述缺點(diǎn)與不足,本發(fā)明的目的在于一種基于Java語言的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法,擴(kuò)展性強(qiáng),便于新協(xié)議的添加,且成本低。

      本發(fā)明的目的通過以下技術(shù)方案實(shí)現(xiàn):

      一種基于Java語言的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法,包括以下步驟:

      S1、編寫自定義注解;

      S2、根據(jù)自定義注解定義的內(nèi)容編寫相應(yīng)的邏輯處理,并封裝為“數(shù)據(jù)轉(zhuǎn)換類”;

      S3、根據(jù)協(xié)議的協(xié)議結(jié)構(gòu),編寫協(xié)議的數(shù)據(jù)實(shí)體類;

      S4、調(diào)用“數(shù)據(jù)轉(zhuǎn)換類”,載入待解析的數(shù)據(jù)實(shí)體,反射獲取數(shù)據(jù)實(shí)體類中相應(yīng)信息,根據(jù)該信息調(diào)用相應(yīng)的邏輯處理,輸出解析結(jié)果。

      步驟S1所述編寫自定義注解,包括:

      S1.1、定義基礎(chǔ)數(shù)據(jù)類型,所述基礎(chǔ)數(shù)據(jù)類型包括枚舉和擴(kuò)展枚舉;

      S1.2、創(chuàng)建注解類:指定注解所修飾的對(duì)象范圍,指定注解被保留的時(shí)間長(zhǎng)短;定義注解的基本字段屬性。

      步驟S2所述根據(jù)自定義注解定義的內(nèi)容編寫相應(yīng)的邏輯處理,并封裝為“數(shù)據(jù)轉(zhuǎn)換類”,具體包括:

      S2.1、創(chuàng)建協(xié)議類,在字段上引用自定義注解,賦值自定義注解各字段屬性的值;

      S2.2、創(chuàng)建數(shù)據(jù)轉(zhuǎn)換類,編寫各基礎(chǔ)數(shù)據(jù)類型互轉(zhuǎn)函數(shù)、對(duì)象反射函數(shù)、對(duì)象轉(zhuǎn)字節(jié)數(shù)組函數(shù)、字節(jié)數(shù)組轉(zhuǎn)對(duì)象函數(shù)、轉(zhuǎn)換邏輯處理函數(shù),并根據(jù)注解編寫擴(kuò)展函數(shù)。

      步驟S4所述調(diào)用“數(shù)據(jù)轉(zhuǎn)換類”,載入待解析的數(shù)據(jù)實(shí)體,反射獲取數(shù)據(jù)實(shí)體類中相應(yīng)信息,根據(jù)該信息調(diào)用相應(yīng)的邏輯處理,輸出解析結(jié)果,具體包括:

      S4.1.1、調(diào)用數(shù)據(jù)轉(zhuǎn)換類對(duì)象轉(zhuǎn)字節(jié)的函數(shù);

      S4.1.2、調(diào)用數(shù)據(jù)轉(zhuǎn)換類對(duì)象反射函數(shù),獲取協(xié)議對(duì)象實(shí)例的字段屬性、自定義注解字段屬性、方法函數(shù);

      S4.1..3、調(diào)用轉(zhuǎn)換邏輯處理函數(shù),根據(jù)自定義注解的字段屬性調(diào)用相應(yīng)的基礎(chǔ)數(shù)據(jù)類型互轉(zhuǎn)函數(shù)與擴(kuò)展函數(shù);

      S4.1.4、調(diào)用函數(shù)處理完畢后,在有多個(gè)協(xié)議對(duì)象實(shí)例的時(shí)候合并轉(zhuǎn)換出來的字節(jié)數(shù)組,返回字節(jié)數(shù)組;

      S4.2.1、調(diào)用數(shù)據(jù)轉(zhuǎn)換類字節(jié)數(shù)組轉(zhuǎn)對(duì)象函數(shù),此時(shí)字節(jié)數(shù)組轉(zhuǎn)對(duì)象函數(shù)的參數(shù)為字節(jié)數(shù)組、Object數(shù)組;

      S4.2.2、調(diào)用數(shù)據(jù)轉(zhuǎn)換類對(duì)象反射函數(shù),獲取協(xié)議對(duì)象實(shí)例的字段屬性、自定義注解字段屬性、方法函數(shù);

      S4.2.3、調(diào)用轉(zhuǎn)換邏輯處理函數(shù),根據(jù)自定義注解的字段屬性調(diào)用相應(yīng)的基礎(chǔ)數(shù)據(jù)類型互轉(zhuǎn)函數(shù)與擴(kuò)展函數(shù);

      S4.2.4、調(diào)用函數(shù)處理完畢后,把轉(zhuǎn)換后的數(shù)據(jù)賦值協(xié)議對(duì)象實(shí)例的字段屬性,反饋結(jié)果。

      本發(fā)明的Java語言的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法,可以用注解在某個(gè)類上面進(jìn)行標(biāo)注,這樣編譯器會(huì)在編譯文件時(shí),會(huì)根據(jù)己設(shè)定的方法來編譯類;本發(fā)明還利用Java的反射機(jī)制,在運(yùn)行時(shí)中動(dòng)態(tài)獲取信息及動(dòng)態(tài)調(diào)用對(duì)象方法的功能,對(duì)任意一個(gè)類,都能知道這個(gè)類的所有屬性和方法,對(duì)于任意一個(gè)對(duì)象,都能夠調(diào)用任意一個(gè)方法和屬性。

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

      (1)本發(fā)明利用Java的自定義注解與反射機(jī)制組合,注解可以無限擴(kuò)展,根據(jù)擴(kuò)展的注解實(shí)現(xiàn)相應(yīng)的功能,大大提高其擴(kuò)展性。

      (2)本發(fā)明注解中定義了相應(yīng)的枚舉與字段,對(duì)一系列的擴(kuò)展都有著相應(yīng)的約束,大大提高約束性。

      (3)本發(fā)明注解中可選擇需要的注解字段作為組合,大大提高其靈活性。

      (4)本發(fā)明注解是一部分、協(xié)議實(shí)體是一部分、協(xié)議反射解析是一部分,層次分明提高層次結(jié)構(gòu)的清晰度,提高其閱讀性。

      (5)本發(fā)明通過反射獲取注解做出相應(yīng)的處理,從調(diào)用者角度看淡簡(jiǎn)化復(fù)雜性,是需要按部就班的使用即可,降低成本。

      附圖說明

      圖1為本發(fā)明的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法的流程圖。

      具體實(shí)施方式

      下面結(jié)合實(shí)施例,對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說明,但本發(fā)明的實(shí)施方式不限于此。

      實(shí)施例

      如圖1所示,本實(shí)施例的網(wǎng)絡(luò)通訊數(shù)據(jù)包解析方法,包括以下步驟:

      步驟1、定義基礎(chǔ)數(shù)據(jù)類型枚舉DataType、擴(kuò)展枚舉等。DataType中字段包含dt_UINT8、dt_INT8、dt_UINT16、dt_INT16、dt_UINT32、dt_INT32、dt_UINT64、dt_INT64、dt_FLOAT、dt_DOUBLE、dt_ASCII、dt_BOOLEAN、dt_UINT8_ARRAY、dt_INT8_ARRAY、dt_UINT16_ARRAY、dt_INT16_ARRAY、dt_UINT32_ARRAY、dt_INT32_ARRAY、dt_UINT64_ARRAY、dt_INT64_ARRAY、dt_FLOAT_ARRAY、dt_DOUBLE_ARRAY、dt_NONE;

      步驟2、創(chuàng)建注解類DataColumn,Target指定注解所修飾的對(duì)象范圍@Target(ElementType.FIELD),Retention指定注解被保留的時(shí)間長(zhǎng)短@Retention(RetentionPolicy.RUNTIME)。定義好注解的基本字段屬性,字段屬性包括數(shù)據(jù)類型dataType數(shù)據(jù)類型枚舉默認(rèn)值為dt_NONE、length數(shù)據(jù)長(zhǎng)度默認(rèn)值為0(一般字符串ASCII需要指定長(zhǎng)度)、order排序序號(hào)默認(rèn)值為0(排列序號(hào)如不指定按協(xié)議類默認(rèn)排序)、describe描述默認(rèn)值為空、enable是否有效默認(rèn)值為true;

      步驟3、創(chuàng)建協(xié)議類,根據(jù)協(xié)議定義協(xié)類的基本字段屬性。在字段上引用自定義注解,賦值自定義注解各字段屬性的值@DataColumn(dataType=DataType.dt_UINT8,describe="描述")等等;

      步驟4、創(chuàng)建數(shù)據(jù)轉(zhuǎn)換類ConvertUtil,編寫各基礎(chǔ)數(shù)據(jù)類型互轉(zhuǎn)函數(shù)(包含shortToByte()、byteToShort()、charToByte()、byteToChar()、intToByte()、bytesToInt()、longToByte()、byteToLong()、doubleToByte()、StringToByte()、byteToString()、stringToAscii()、asciiToString()、高地位轉(zhuǎn)換函數(shù)high2low())、編寫對(duì)象反射函數(shù)(包含反射獲取對(duì)象屬性、函數(shù)等函數(shù)getreFlection()、反射賦值函數(shù)setreFlection())、編寫對(duì)象轉(zhuǎn)字節(jié)數(shù)組函數(shù)(主入口getBytesByObjects())、編寫字節(jié)數(shù)組轉(zhuǎn)對(duì)象函數(shù)(包含主入口setObjectsByBytes())、編寫轉(zhuǎn)換邏輯處理函數(shù)(包含字段排序函數(shù)fieldDesc()、字節(jié)數(shù)組拷貝函數(shù)getArrayCopy())、根據(jù)注解編寫擴(kuò)展函數(shù)等。

      步驟5、創(chuàng)建協(xié)議對(duì)象實(shí)例,賦值協(xié)議對(duì)象實(shí)例各字段屬性的值;

      步驟6.1、調(diào)用數(shù)據(jù)轉(zhuǎn)換類對(duì)象轉(zhuǎn)字節(jié)的函數(shù)getBytesByObjects(),注意對(duì)象轉(zhuǎn)字節(jié)函數(shù)參數(shù)為Object數(shù)組類型Object[]cl,可加入多個(gè)協(xié)議對(duì)象實(shí)例進(jìn)行轉(zhuǎn)換new Object[]{obj1、obj2、obj3};

      步驟6.2、調(diào)用數(shù)據(jù)轉(zhuǎn)換類對(duì)象反射函數(shù)getreFlection(),獲取協(xié)議對(duì)象實(shí)例的字段屬性、自定義注解字段屬性、方法函數(shù)等;

      步驟6.3、調(diào)用轉(zhuǎn)換轉(zhuǎn)換邏輯處理函數(shù),根據(jù)自定義注解的字段屬性調(diào)用相應(yīng)的基礎(chǔ)數(shù)據(jù)類型互轉(zhuǎn)函數(shù)與擴(kuò)展函數(shù)等;

      步驟6.4、調(diào)用函數(shù)處理完畢后,在有多個(gè)協(xié)議對(duì)象實(shí)例的時(shí)候合并轉(zhuǎn)換出來的字節(jié)數(shù)組,返回字節(jié)數(shù)組;

      步驟7.1、調(diào)用數(shù)據(jù)轉(zhuǎn)換類字節(jié)數(shù)組轉(zhuǎn)對(duì)象函數(shù)setObjectsByBytes(),注意字節(jié)數(shù)組轉(zhuǎn)對(duì)象函數(shù)參數(shù)為字節(jié)數(shù)組、Object數(shù)組byte[]data,Object[]cl,因?yàn)樵贘ava中有引用對(duì)象的說法,在函數(shù)執(zhí)行完后,會(huì)以引用方式反饋,類似C/C++地址引用;

      步驟7.2、調(diào)用數(shù)據(jù)轉(zhuǎn)換類對(duì)象反射函數(shù)getreFlection(),獲取協(xié)議對(duì)象實(shí)例的字段屬性、自定義注解字段屬性、方法函數(shù)等;

      步驟7.3、調(diào)用轉(zhuǎn)換邏輯處理函數(shù),根據(jù)自定義注解的字段屬性調(diào)用相應(yīng)的基礎(chǔ)數(shù)據(jù)類型互轉(zhuǎn)函數(shù)與擴(kuò)展函數(shù)等;

      步驟7.5、調(diào)用函數(shù)處理完畢后,調(diào)用反射賦值函數(shù)setreFlection()把轉(zhuǎn)換后的數(shù)據(jù)賦值協(xié)議對(duì)象實(shí)例的字段屬性,反饋結(jié)果。

      上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受所述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。

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