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

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

文檔序號:12376817閱讀:1415來源:國知局

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



背景技術(shù):

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



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

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

本發(fā)明的目的通過以下技術(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ù)實體類;

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

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

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

S1.2、創(chuà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ù)、對象反射函數(shù)、對象轉(zhuǎn)字節(jié)數(shù)組函數(shù)、字節(jié)數(shù)組轉(zhuǎn)對象函數(shù)、轉(zhuǎn)換邏輯處理函數(shù),并根據(jù)注解編寫擴展函數(shù)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

附圖說明

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

具體實施方式

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

實施例

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

步驟1、定義基礎(chǔ)數(shù)據(jù)類型枚舉DataType、擴展枚舉等。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指定注解所修飾的對象范圍@Target(ElementType.FIELD),Retention指定注解被保留的時間長短@Retention(RetentionPolicy.RUNTIME)。定義好注解的基本字段屬性,字段屬性包括數(shù)據(jù)類型dataType數(shù)據(jù)類型枚舉默認值為dt_NONE、length數(shù)據(jù)長度默認值為0(一般字符串ASCII需要指定長度)、order排序序號默認值為0(排列序號如不指定按協(xié)議類默認排序)、describe描述默認值為空、enable是否有效默認值為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())、編寫對象反射函數(shù)(包含反射獲取對象屬性、函數(shù)等函數(shù)getreFlection()、反射賦值函數(shù)setreFlection())、編寫對象轉(zhuǎn)字節(jié)數(shù)組函數(shù)(主入口getBytesByObjects())、編寫字節(jié)數(shù)組轉(zhuǎn)對象函數(shù)(包含主入口setObjectsByBytes())、編寫轉(zhuǎn)換邏輯處理函數(shù)(包含字段排序函數(shù)fieldDesc()、字節(jié)數(shù)組拷貝函數(shù)getArrayCopy())、根據(jù)注解編寫擴展函數(shù)等。

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

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

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

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

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

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

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

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

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

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

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
宁都县| 台北市| 鄄城县| 黔南| 惠州市| 纳雍县| 德阳市| 宝丰县| 涡阳县| 宁阳县| 高淳县| 曲松县| 孟村| 岳阳市| 岐山县| 永州市| 临武县| 垫江县| 永丰县| 石台县| 三亚市| 永吉县| 万源市| 唐海县| 山丹县| 桑植县| 环江| 衢州市| 大足县| 夏邑县| 华容县| 雷州市| 庆云县| 沈阳市| 合作市| 永川市| 稷山县| 漳浦县| 商洛市| 休宁县| 缙云县|