一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法
【專利摘要】本發(fā)明公開了一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法。該方法包括:通信源端選擇對應的序列化規(guī)則,將需發(fā)送的數(shù)據(jù)集合中的每個數(shù)據(jù)都序列化為相應的字節(jié)流,將各個數(shù)據(jù)序列化后的字節(jié)流排列成S1;在S1之前加入長度標志和數(shù)據(jù)集合類型標志,形成S3;對S3進行CRC16校驗,將校驗數(shù)據(jù)加入到S3之后,形成S4;通信源端將S4發(fā)送到通信目的端;通信目的端對S4進行解析,得到S1、數(shù)據(jù)集合類型標志和校驗數(shù)據(jù);對S1進行CRC16校驗,如果校驗不通過,請求通信源端重新發(fā)送數(shù)據(jù);如果校驗通過,則對S1進行反序列化,得到通信源端所發(fā)送的數(shù)據(jù)集合。通過使用上述方法,可以方便不同平臺之間的數(shù)據(jù)流的序列化、打包、傳輸和解析,減少跨平臺通信的數(shù)據(jù)傳輸量,提高傳輸效率。
【專利說明】-種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法
【技術領域】
[0001] 本發(fā)明設及網(wǎng)絡通信技術,特別設及一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法。
【背景技術】
[0002] 隨著網(wǎng)絡技術的發(fā)展和智能手機技術的發(fā)展,跨平臺網(wǎng)絡通信技術已越來越多的 應用于開發(fā)過程中。但是,在不同平臺中,使用的編程語言、支持的數(shù)據(jù)類型種類、數(shù)據(jù)長 度、字節(jié)序和字符編碼等多不相同,從而導致同樣的通信數(shù)據(jù)流在不同的平臺中會被解釋 為不同的數(shù)據(jù),所W各個平臺之間無法直接通信。
[0003] 目前,常用的跨平臺通信方案有:基于簡單對象訪問協(xié)議(SOAP, Simple化ject Access Protocol)消息格式的網(wǎng)絡服務器(Web Service)和基于 JSONQavaScript Object Notation)消息格式的RESTful服務等。
[0004] 然而,由于Web Service完全基于XML、XSD (XML Schema)等標準,通過Web Service定義的接口獲得Web Service的描述語言(WSDL)的描述文件,各平臺依據(jù)此WS化 描述文件獲得Web Service的接口信息。該方法還存在W下缺點:
[0005] 1、在網(wǎng)絡通信層,采用HTTP協(xié)議進行通信,其交互性受HTTP通訊協(xié)議中的"請 求-響應"機制限制,導致其在通信交互時實時性相對較低。
[0006] 2、在數(shù)據(jù)協(xié)議方面,該方法使用基于XML協(xié)議的消息格式,而XML是一種可擴展標 記語言,為符合其格式將導致非有效數(shù)據(jù)過多,導致數(shù)據(jù)通信相對需要耗費更多流量、占用 較大帶寬。
[0007] 另外,上述基于JS0N消息格式的RESTful服務,貝Ij采用JSONQavaScript Object Notation)格式,該方法也存在W下缺點JSON格式需要在每個傳輸數(shù)據(jù)中加入數(shù)據(jù)名稱, 從而增大了傳輸數(shù)據(jù)量,也占用較大帶寬,導致數(shù)據(jù)傳輸效率有一定降低。
【發(fā)明內(nèi)容】
[000引有鑒于此,本發(fā)明提供一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法,從而可W方便不同平 臺之間的數(shù)據(jù)流的序列化、打包、傳輸和解析,減少跨平臺通信的數(shù)據(jù)傳輸量,提高傳輸效 率。
[0009] 本發(fā)明的技術方案具體是該樣實現(xiàn)的:
[0010] 一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法,該方法包括:
[0011] A、通信源端根據(jù)數(shù)據(jù)類型選擇對應的序列化規(guī)則,將需發(fā)送的數(shù)據(jù)集合中的每個 數(shù)據(jù)都序列化為相應的字節(jié)流;
[0012] B、通信源端按照所述數(shù)據(jù)集合中各數(shù)據(jù)的排列順序,將各個數(shù)據(jù)序列化后的字節(jié) 流排列成第一字節(jié)流S1 ;
[0013] C、通信源端在所述第一字節(jié)流S1之前加入4個字節(jié)的用于表示第一字節(jié)流S1的 長度的長度標志,形成第二字節(jié)流S2 ;
[0014] D、通信源端在所述第二字節(jié)流S2之前加入2個字節(jié)的用于表示所傳輸?shù)臄?shù)據(jù)的 數(shù)據(jù)集合類型的數(shù)據(jù)集合類型標志,形成第=字節(jié)流S3 ;
[0015] E、通信源端對所述第S字節(jié)流S3進行CRC16校驗,得到兩個字節(jié)的校驗數(shù)據(jù);在 所述第=字節(jié)流S3之后加入所述校驗數(shù)據(jù),形成第四字節(jié)流S4 ;
[0016] F、通信源端與通信目的端建立網(wǎng)絡連接,將第四字節(jié)流S4發(fā)送到通信目的端;
[0017] G、通信目的端對所接收到的第四字節(jié)流S4進行解析,得到與所述第四字節(jié)流S4 對應的第一字節(jié)流S1、數(shù)據(jù)集合類型標志和校驗數(shù)據(jù);
[0018] H、通信目的端對所得到的第一字節(jié)流S1進行CRC16校驗,如果校驗不通過,則請 求通信源端重新發(fā)送數(shù)據(jù);如果校驗通過,則執(zhí)行步驟I ;
[0019] I、通信目的端根據(jù)所得到的數(shù)據(jù)集合類型標志確定所得到的第一字節(jié)流S1的數(shù) 據(jù)集合類型,根據(jù)數(shù)據(jù)集合類型選擇對應的序列化規(guī)則,對第一字節(jié)流S1進行反序列化, 得到通信源端所發(fā)送的數(shù)據(jù)集合。
[0020] 較佳的,所述序列化規(guī)則包括;數(shù)組數(shù)據(jù)序列化規(guī)則和非數(shù)組數(shù)據(jù)序列化規(guī)則。
[0021] 較佳的,所述將需發(fā)送的數(shù)據(jù)集合中的每個數(shù)據(jù)都序列化為相應的字節(jié)流包括:
[0022] 當所述數(shù)據(jù)為數(shù)組數(shù)據(jù)時,使用預設的數(shù)組數(shù)據(jù)序列化規(guī)則將所述數(shù)據(jù)序列化為 相應的字節(jié)流;
[0023] 當所述數(shù)據(jù)為非數(shù)組數(shù)據(jù)時,使用預設的非數(shù)組數(shù)據(jù)序列化規(guī)則將所述數(shù)據(jù)序列 化為相應的字節(jié)流。
[0024] 較佳的,所述非數(shù)組數(shù)據(jù)序列化規(guī)則包括:
[0025] 將非數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第1個字節(jié)設為數(shù)據(jù)類型標志字節(jié)TA,用于標 志該數(shù)據(jù)的數(shù)據(jù)類型W及該數(shù)據(jù)是否為數(shù)組數(shù)據(jù);
[0026] 將非數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第2個字節(jié)L0和第3個字節(jié)L1組成一個整型 數(shù)據(jù),表示該非數(shù)組數(shù)據(jù)編碼化后的數(shù)據(jù)所包含的字節(jié)的長度n ;
[0027] 將所述非數(shù)組數(shù)據(jù)編碼化為相應的n個字節(jié),排列在所述字節(jié)L1之后;
[002引對于布爾類型的非數(shù)組數(shù)據(jù),在序列化時統(tǒng)一編碼化為一個字節(jié),該字節(jié)取值為1 時表示真,取值為0時表示假。
[0029] 較佳的,所述由L0和L1組成的整型數(shù)據(jù)的取值范圍為0-65535。
[0030] 較佳的,對于非數(shù)組數(shù)據(jù)中的string類型數(shù)據(jù),使用utf-8編碼化。
[0031] 較佳的,所述數(shù)組數(shù)據(jù)序列化規(guī)則包括:
[0032] 將數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第1個字節(jié)設為數(shù)據(jù)類型標志字節(jié)TA,用于標志 該數(shù)據(jù)的數(shù)據(jù)類型W及該數(shù)據(jù)是否為數(shù)組數(shù)據(jù);
[0033] 將數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第2個字節(jié)AL0和第3個字節(jié)AL1組成一個整型 數(shù)據(jù),表示該數(shù)組數(shù)據(jù)的數(shù)組中所包含的數(shù)據(jù)的數(shù)量;
[0034] 對于所述數(shù)組數(shù)據(jù)的數(shù)組中的每一個數(shù)據(jù),將該數(shù)據(jù)編碼化為相應的n個字節(jié), 并在所述n個字節(jié)之前加入由兩個字節(jié)L0和L1組成的整型數(shù)據(jù),形成該數(shù)據(jù)的序列化字 節(jié)流;其中,所述整型數(shù)據(jù)表示所述n個字節(jié)流的長度n ;
[0035] 將所述數(shù)組數(shù)據(jù)的數(shù)組中的每一個數(shù)據(jù)的序列化字節(jié)流按各個數(shù)據(jù)在數(shù)組中的 排列順序依次排列在所述字節(jié)AL1之后,形成該數(shù)組數(shù)據(jù)的序列化字節(jié)流。
[0036] 較佳的,所述數(shù)據(jù)類型標志字節(jié)TA的前7位組成1個7位2進制數(shù),表示該數(shù)據(jù) 的數(shù)據(jù)類型;
[0037] 所述數(shù)據(jù)類型標志字節(jié)TA的第8位存放數(shù)組標志,表示該數(shù)據(jù)是否為數(shù)組數(shù)據(jù)。 [003引較佳的,所述由AL0和AL1組成的整型數(shù)據(jù)的取值范圍為0-65535。
[0039] 較佳的,所述由L0和L1組成的整型數(shù)據(jù)的取值范圍為0-65535。
[0040] 如上可見,在本發(fā)明所提供的跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法中,通信源端可將 一組數(shù)據(jù)使用自定義的支持數(shù)組數(shù)據(jù)和非數(shù)組數(shù)據(jù)的輕量級編碼方式進行編碼,并計算 CRC16校驗后,統(tǒng)一按照網(wǎng)絡字節(jié)序方式進行打包,然后利用socket網(wǎng)絡連接將序列化后 的數(shù)據(jù)發(fā)送到通信目的端;通信目的端將接收到的符合網(wǎng)絡字節(jié)序的字節(jié)流初步解析后, 進行CRC16校驗,如校驗失敗,要求通信源端重發(fā)數(shù)據(jù),如校驗成功,則按照與通信源端相 同的方式將數(shù)據(jù)解碼,得到通信源端發(fā)送的數(shù)據(jù)。由于在上述的跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸 方法中,在對數(shù)據(jù)進行打包時未加入數(shù)據(jù)名稱等過多的非有效數(shù)據(jù),因此上述編碼方式是 一種輕量級編碼方式,相比于現(xiàn)有技術中常用的跨平臺通信方法具有數(shù)據(jù)傳輸效率高的特 點。另一方面,由于上述的跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法中的編碼方法支持非數(shù)組數(shù)據(jù)和 數(shù)組數(shù)據(jù),并具有校驗重發(fā)機制,因此相對于現(xiàn)有技術中常用的數(shù)據(jù)傳輸方法,具有兼容數(shù) 據(jù)類型多,傳輸可靠性好的特點。
【專利附圖】
【附圖說明】
[0041] 圖1為本發(fā)明實施例中的跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法的流程示意圖。
[0042] 圖2為本發(fā)明的實施例中的非數(shù)組數(shù)據(jù)序列化規(guī)則的示意圖。
[0043] 圖3為本發(fā)明的實施例中的數(shù)據(jù)類型標志字節(jié)TA的結(jié)構(gòu)示意圖。
[0044] 圖4為本發(fā)明的實施例中的數(shù)組數(shù)據(jù)序列化規(guī)則的示意圖。
[0045] 圖5為本發(fā)明的實施例中的字節(jié)流S4的結(jié)構(gòu)示意圖。
[0046] 圖6為本發(fā)明的具體實施例一中的個人信息數(shù)據(jù)表序列化后的字節(jié)流數(shù)據(jù)示意 圖。
【具體實施方式】
[0047] 為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,W下參照附圖并舉實施例,對 本發(fā)明進一步詳細說明。
[0048] 在不同的平臺中,雖然所使用的編程語言、支持的數(shù)據(jù)類型種類、數(shù)據(jù)長度、字節(jié) 序和字符編碼等多不相同,導致同樣的通信數(shù)據(jù)流在不同的平臺中會被解釋為不同的數(shù) 據(jù),無法直接通信,但是,只要在通信過程中對傳輸?shù)臄?shù)據(jù)進行數(shù)據(jù)長度、字節(jié)序和字符編 碼按照一定的規(guī)則進行處理,即可實現(xiàn)不同平臺和不同編程語言開發(fā)的程序通信,使通信 目的端正確識別通信源端發(fā)送的數(shù)據(jù)。
[0049] 在本發(fā)明的技術方案中,在兩個終端進行的網(wǎng)絡數(shù)據(jù)通信準備階段和通信過程 中,可W將向另一方傳輸數(shù)據(jù)的一方稱為通信源端,并將接受另一方傳輸數(shù)據(jù)的一方稱為 通信目的端。
[0050] 在本發(fā)明的技術方案中,提供了一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法。
[0化1] 圖1為本發(fā)明實施例中的跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法的流程示意圖。如圖1所 示,本發(fā)明實施例中的跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法主要包括如下所述的步驟:
[0化2] 步驟11,通信源端根據(jù)數(shù)據(jù)類型選擇對應的序列化規(guī)則,將需發(fā)送的數(shù)據(jù)集合中 的每個數(shù)據(jù)都序列化為相應的字節(jié)流。
[0053] 在本發(fā)明的技術方案中,為了確保通信目的端可正確反序列化通信源端發(fā)送到的 已序列化的字節(jié)流數(shù)據(jù),通信源端和通信目的端可W使用相同的序列化規(guī)則對數(shù)據(jù)進行編 碼和解碼(分析)。
[0化4] 較佳的,在本發(fā)明的具體實施例中,所述序列化規(guī)則包括:數(shù)組數(shù)據(jù)序列化規(guī)則和 非數(shù)組數(shù)據(jù)序列化規(guī)則。
[005引其中,圖2為本發(fā)明的實施例中的非數(shù)組數(shù)據(jù)序列化規(guī)則的示意圖,如圖2所示, 在本發(fā)明的一個較佳實施例中,所述非數(shù)組數(shù)據(jù)序列化規(guī)則可W包括如下所述的步驟: [0化6] 步驟A1,將非數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第1個字節(jié)設為數(shù)據(jù)類型標志字節(jié) TA,用于標志該數(shù)據(jù)的數(shù)據(jù)類型W及該數(shù)據(jù)是否為數(shù)組數(shù)據(jù)。
[0化7] 圖3為本發(fā)明的實施例中的數(shù)據(jù)類型標志字節(jié)TA的結(jié)構(gòu)示意圖。如圖3所示,較 佳的,在本發(fā)明的具體實施例中,所述數(shù)據(jù)類型標志字節(jié)TA的第8位TA7存放的是數(shù)組標 志,表示該數(shù)據(jù)是否為數(shù)組數(shù)據(jù)。例如,TA7的值為0時表示該數(shù)據(jù)為非數(shù)組數(shù)據(jù),值為1時 表示該數(shù)據(jù)為數(shù)組數(shù)據(jù)。所述數(shù)據(jù)類型標志字節(jié)的第8位TA7的取值與數(shù)據(jù)類型的對應關 系可參見下述的表1 ;
[005引
【權利要求】
1. 一種跨平臺的網(wǎng)絡數(shù)據(jù)的傳輸方法,其特征在于,該方法包括: A、 通信源端根據(jù)數(shù)據(jù)類型選擇對應的序列化規(guī)則,將需發(fā)送的數(shù)據(jù)集合中的每個數(shù)據(jù) 都序列化為相應的字節(jié)流; B、 通信源端按照所述數(shù)據(jù)集合中各數(shù)據(jù)的排列順序,將各個數(shù)據(jù)序列化后的字節(jié)流排 列成第一字節(jié)流S1 ; C、 通信源端在所述第一字節(jié)流S1之前加入4個字節(jié)的用于表示第一字節(jié)流S1的長度 的長度標志,形成第二字節(jié)流S2 ; D、 通信源端在所述第二字節(jié)流S2之前加入2個字節(jié)的用于表示所傳輸?shù)臄?shù)據(jù)的數(shù)據(jù) 集合類型的數(shù)據(jù)集合類型標志,形成第三字節(jié)流S3 ; E、 通信源端對所述第三字節(jié)流S3進行CRC16校驗,得到兩個字節(jié)的校驗數(shù)據(jù);在所述 第三字節(jié)流S3之后加入所述校驗數(shù)據(jù),形成第四字節(jié)流S4 ; F、 通信源端與通信目的端建立網(wǎng)絡連接,將第四字節(jié)流S4發(fā)送到通信目的端; G、 通信目的端對所接收到的第四字節(jié)流S4進行解析,得到與所述第四字節(jié)流S4對應 的第一字節(jié)流S1、數(shù)據(jù)集合類型標志和校驗數(shù)據(jù); H、 通信目的端對所得到的第一字節(jié)流S1進行CRC16校驗,如果校驗不通過,則請求通 信源端重新發(fā)送數(shù)據(jù);如果校驗通過,則執(zhí)行步驟I ; I、 通信目的端根據(jù)所得到的數(shù)據(jù)集合類型標志確定所得到的第一字節(jié)流S1的數(shù)據(jù)集 合類型,根據(jù)數(shù)據(jù)集合類型選擇對應的序列化規(guī)則,對第一字節(jié)流S1進行反序列化,得到 通信源端所發(fā)送的數(shù)據(jù)集合。
2. 根據(jù)權利要求1所述的方法,其特征在于, 所述序列化規(guī)則包括:數(shù)組數(shù)據(jù)序列化規(guī)則和非數(shù)組數(shù)據(jù)序列化規(guī)則。
3. 根據(jù)權利要求2所述的方法,其特征在于,所述將需發(fā)送的數(shù)據(jù)集合中的每個數(shù)據(jù) 都序列化為相應的字節(jié)流包括: 當所述數(shù)據(jù)為數(shù)組數(shù)據(jù)時,使用預設的數(shù)組數(shù)據(jù)序列化規(guī)則將所述數(shù)據(jù)序列化為相應 的字節(jié)流; 當所述數(shù)據(jù)為非數(shù)組數(shù)據(jù)時,使用預設的非數(shù)組數(shù)據(jù)序列化規(guī)則將所述數(shù)據(jù)序列化為 相應的字節(jié)流。
4. 根據(jù)權利要求3所述的方法,其特征在于,所述非數(shù)組數(shù)據(jù)序列化規(guī)則包括: 將非數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第1個字節(jié)設為數(shù)據(jù)類型標志字節(jié)TA,用于標志該 數(shù)據(jù)的數(shù)據(jù)類型以及該數(shù)據(jù)是否為數(shù)組數(shù)據(jù); 將非數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第2個字節(jié)L0和第3個字節(jié)L1組成一個整型數(shù)據(jù), 表示該非數(shù)組數(shù)據(jù)編碼化后的數(shù)據(jù)所包含的字節(jié)的長度n ; 將所述非數(shù)組數(shù)據(jù)編碼化為相應的n個字節(jié),排列在所述字節(jié)L1之后; 對于布爾類型的非數(shù)組數(shù)據(jù),在序列化時統(tǒng)一編碼化為一個字節(jié),該字節(jié)取值為1時 表示真,取值為〇時表示假。
5. 根據(jù)權利要求4所述的方法,其特征在于: 所述由L0和L1組成的整型數(shù)據(jù)的取值范圍為0-65535。
6. 根據(jù)權利要求4所述的方法,其特征在于: 對于非數(shù)組數(shù)據(jù)中的string類型數(shù)據(jù),使用utf-8編碼化。
7. 根據(jù)權利要求3所述的方法,其特征在于,所述數(shù)組數(shù)據(jù)序列化規(guī)則包括: 將數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第1個字節(jié)設為數(shù)據(jù)類型標志字節(jié)TA,用于標志該數(shù) 據(jù)的數(shù)據(jù)類型以及該數(shù)據(jù)是否為數(shù)組數(shù)據(jù); 將數(shù)組數(shù)據(jù)被序列化的字節(jié)流的第2個字節(jié)ALO和第3個字節(jié)AL1組成一個整型數(shù)據(jù), 表示該數(shù)組數(shù)據(jù)的數(shù)組中所包含的數(shù)據(jù)的數(shù)量; 對于所述數(shù)組數(shù)據(jù)的數(shù)組中的每一個數(shù)據(jù),將該數(shù)據(jù)編碼化為相應的n個字節(jié),并在 所述n個字節(jié)之前加入由兩個字節(jié)L0和L1組成的整型數(shù)據(jù),形成該數(shù)據(jù)的序列化字節(jié)流; 其中,所述整型數(shù)據(jù)表示所述n個字節(jié)流的長度n ; 將所述數(shù)組數(shù)據(jù)的數(shù)組中的每一個數(shù)據(jù)的序列化字節(jié)流按各個數(shù)據(jù)在數(shù)組中的排列 順序依次排列在所述字節(jié)AL1之后,形成該數(shù)組數(shù)據(jù)的序列化字節(jié)流。
8. 根據(jù)權利要求4或7所述的方法,其特征在于: 所述數(shù)據(jù)類型標志字節(jié)TA的前7位組成1個7位2進制數(shù),表示該數(shù)據(jù)的數(shù)據(jù)類型; 所述數(shù)據(jù)類型標志字節(jié)TA的第8位存放數(shù)組標志,表示該數(shù)據(jù)是否為數(shù)組數(shù)據(jù)。
9. 根據(jù)權利要求7所述的方法,其特征在于: 所述由ALO和AL1組成的整型數(shù)據(jù)的取值范圍為0-65535。
10. 根據(jù)權利要求7所述的方法,其特征在于: 所述由L0和L1組成的整型數(shù)據(jù)的取值范圍為0-65535。
【文檔編號】H04L29/08GK104486396SQ201410758792
【公開日】2015年4月1日 申請日期:2014年12月10日 優(yōu)先權日:2014年12月10日
【發(fā)明者】曹洪太, 邱竹泉, 李秀超 申請人:中國電信集團系統(tǒng)集成有限責任公司