本發(fā)明實(shí)施例屬于通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)包處理方法及裝置。
背景技術(shù):
目前,現(xiàn)有技術(shù)中,控制器將一個(gè)數(shù)據(jù)串拆分為多個(gè)數(shù)據(jù)串,再將該多個(gè)數(shù)據(jù)串發(fā)送至同樣個(gè)數(shù)的緩沖器,并根據(jù)拆分的多個(gè)數(shù)據(jù)串的先后順序?yàn)樗鐾瑯觽€(gè)數(shù)的緩沖器設(shè)置優(yōu)先級(jí),最后按設(shè)置了優(yōu)先級(jí)的多個(gè)緩沖器發(fā)送接收的數(shù)據(jù)串。由于當(dāng)發(fā)生丟包事故時(shí),接收方會(huì)因數(shù)據(jù)串之間的亂序或缺失的緣故而導(dǎo)致重新組合的數(shù)據(jù)的不正確。
故,有必要提出一種新的技術(shù)方案,以解決上述技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種數(shù)據(jù)包處理方法及裝置,旨在解決現(xiàn)有的發(fā)送數(shù)據(jù)包出現(xiàn)亂序或缺失導(dǎo)致發(fā)送的數(shù)據(jù)不正確的問(wèn)題。
本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種數(shù)據(jù)包處理方法,所述方法包括:
獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,所述N為整數(shù),N大于或等于1;
將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器;
在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
可選地,所述獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,具體包括:
獲取緩沖器的個(gè)數(shù)以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
在緩沖器的個(gè)數(shù)為N時(shí),將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串。
可選地,所述獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串具體包括:
獲取緩沖器的容量以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串,以使拆分后的數(shù)據(jù)串的大小小于或等于所述緩沖器的容量。
可選地,所述在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器,具體包括:
讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)識(shí)位判斷所述緩沖器接收到的數(shù)據(jù)串是否發(fā)送完成;
在所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
可選地,所述讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)識(shí)位判斷所述緩沖器接收到的數(shù)據(jù)串是否發(fā)送完成,具體包括:
讀取預(yù)置的發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成;
在所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,所述第二預(yù)置值與所述第一預(yù)置值不等;
對(duì)應(yīng)地,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器之前,包括:
將所述發(fā)送標(biāo)志位從所述第一預(yù)置值重置為所述第二預(yù)置值。
本發(fā)明實(shí)施例的另一目的在于提供一種數(shù)據(jù)包處理裝置,所述裝置包括:
原始數(shù)據(jù)獲取單元,用于獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,所述N為整數(shù),N大于或等于1;
數(shù)據(jù)串發(fā)送單元,用于將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器;
數(shù)據(jù)串發(fā)送單元還用于,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
可選地,所述原始數(shù)據(jù)獲取單元具體包括:
第一獲取模塊,用于獲取緩沖器的個(gè)數(shù)以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
第一拆分模塊,用于在緩沖器的個(gè)數(shù)為N時(shí),將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串。
可選地,所述原始數(shù)據(jù)獲取單元具體包括:
第二獲取模塊,獲取緩沖器的容量以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
第二拆分模塊,將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串,以使拆分后的數(shù)據(jù)串的大小小于或等于所述緩沖器的容量。
可選地,所述數(shù)據(jù)串發(fā)送單元具體包括:
發(fā)送判斷模塊,用于讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)識(shí)位判斷所述緩沖器接收到的數(shù)據(jù)串是否發(fā)送完成;
數(shù)據(jù)串發(fā)送模塊,用于在所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
可選地,所述發(fā)送判斷模塊具體包括:
發(fā)送完成判定模塊,用于讀取預(yù)置的發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成;在所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,所述第二預(yù)置值與所述第一預(yù)置值不等;
對(duì)應(yīng)地,所述數(shù)據(jù)包處理裝置還包括:
重置單元,用于將所述發(fā)送標(biāo)志位從所述第一預(yù)置值重置為所述第二預(yù)置值。
在本發(fā)明實(shí)施例中,由于將獲取的原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分成N段數(shù)據(jù)串,并將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器,因此能夠確保每一段數(shù)據(jù)串能有序的發(fā)送完成,從而提高了發(fā)送數(shù)據(jù)的準(zhǔn)確性、完整性。
附圖說(shuō)明
圖1是本發(fā)明第一實(shí)施例提供的一種數(shù)據(jù)包處理方法的流程圖;
圖2是本發(fā)明第二實(shí)施例提供的一種數(shù)據(jù)包處理裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在本發(fā)明實(shí)施例中,獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
為了說(shuō)明本發(fā)明所述的技術(shù)方案,下面通過(guò)具體實(shí)施例來(lái)進(jìn)行說(shuō)明。
實(shí)施例一:
圖1示出了本發(fā)明第一實(shí)施例提供的一種數(shù)據(jù)包處理方法的流程圖,詳述如下:
步驟S11,獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,所述N為整數(shù),N大于或等于1。
其中,在存在多個(gè)緩沖器時(shí),為了均衡使用緩沖器而避免過(guò)度使用某一個(gè)緩沖器,所述步驟S11具體包括:
A1、獲取緩沖器的個(gè)數(shù)以及原始數(shù)據(jù)包中的原始數(shù)據(jù)。
A2、在緩沖器的個(gè)數(shù)為N時(shí),將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串。
具體地,獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并獲取緩沖器的個(gè)數(shù),當(dāng)緩沖器的個(gè)數(shù)為N時(shí),根據(jù)緩沖器的個(gè)數(shù)將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串。需要指出的是,拆分后的N段數(shù)據(jù)串的大小小于緩沖器的最大容量。通常,當(dāng)存在多個(gè)緩沖器時(shí),其最大容量是相等的,此時(shí),可將原始數(shù)據(jù)拆分為N段字節(jié)大小相等的數(shù)據(jù)串,當(dāng)然,若原始數(shù)據(jù)的字節(jié)不足以均分N段字節(jié)大小相等的數(shù)據(jù)串,則首先拆分為N-1段字節(jié)大小相等的數(shù)據(jù)串,再將剩余的字節(jié)作為第N段數(shù)據(jù)串。例如,將原始數(shù)據(jù)拆分為3(N=3)段字節(jié)大小為8個(gè)字節(jié)的數(shù)據(jù)串。當(dāng)然,若拆分了2段字節(jié)大小為8個(gè)字節(jié)的數(shù)據(jù)串之后,剩余的數(shù)據(jù)串不足8個(gè)字節(jié),則剩余的字節(jié)將作為第3段數(shù)據(jù)串。
可選地,在只有一個(gè)緩沖器時(shí),為了避免發(fā)送至緩沖器的數(shù)據(jù)串的大小超過(guò)緩沖器的最大容量,所述步驟S11具體包括:
A1’、獲取緩沖器的容量以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
A2’、將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串,以使拆分后的數(shù)據(jù)串的大小小于或等于所述緩沖器的容量。具體地,判斷所述原始數(shù)據(jù)的大小是否超過(guò)緩沖器的最大容量,并在所述原始數(shù)據(jù)的大小超過(guò)緩沖器的最大容量時(shí),將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串,以使拆分后的每段數(shù)據(jù)串的大小都小于或等于所述緩沖器的容量。
步驟S12,將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器。
具體地,在將獲取的原始數(shù)據(jù)包中的原始數(shù)據(jù)根據(jù)緩沖器的個(gè)數(shù)或容量拆分為N段數(shù)據(jù)串之后,將所述N段數(shù)據(jù)串按照原始數(shù)據(jù)的先后順序發(fā)送至緩沖器,例如,首先將第1段數(shù)據(jù)串發(fā)送至緩沖器,再發(fā)送第2段數(shù)據(jù)串。
可選地,為了能夠確保拆分的數(shù)據(jù)串按順序發(fā)送,在所述S12之前,包括:
B0、將所述拆分為N段數(shù)據(jù)串按原始數(shù)據(jù)的先后順序標(biāo)號(hào)。
具體地,在將獲取的原始數(shù)據(jù)包中的原始數(shù)據(jù)根據(jù)緩沖器的個(gè)數(shù)或容量拆分為N段數(shù)據(jù)串之后,根據(jù)原始數(shù)據(jù)的先后順序?qū)段數(shù)據(jù)串從小到大標(biāo)號(hào),此時(shí),步驟S12將按標(biāo)號(hào)從小到大將N段數(shù)據(jù)串順序發(fā)送至緩沖器。
可選地,當(dāng)緩沖器個(gè)數(shù)為N時(shí),為了能夠確保拆分的數(shù)據(jù)串按順序發(fā)送,所述S12包括:
B1、配置N個(gè)緩沖器的優(yōu)先級(jí)。
B2、按照數(shù)據(jù)串的先后順序以及緩沖器的高低優(yōu)先級(jí)設(shè)置一一對(duì)應(yīng)關(guān)系,按照所述對(duì)應(yīng)關(guān)系將所述N段數(shù)據(jù)串發(fā)送至對(duì)應(yīng)的緩沖器。
具體地,將排序在第1的數(shù)據(jù)串設(shè)置與優(yōu)先級(jí)最高的緩沖器對(duì)應(yīng),排序在第2的數(shù)據(jù)串設(shè)置與優(yōu)先級(jí)次高的緩沖器對(duì)應(yīng),其他依次類推。由于緩沖器的優(yōu)先級(jí)越高,其發(fā)送數(shù)據(jù)串的順序越靠前,因此,保證了排序在前的數(shù)據(jù)串優(yōu)先發(fā)送。
步驟S13,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
具體地,當(dāng)所述緩沖器接收到的數(shù)據(jù)串確認(rèn)發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)發(fā)送至緩沖器,這樣,能夠保證數(shù)據(jù)串已全部發(fā)送,進(jìn)而保證接收方能夠接收到完整的數(shù)據(jù)串。
為了進(jìn)一步確認(rèn)所述緩沖器接收到的數(shù)據(jù)串已經(jīng)發(fā)送結(jié)束,所述步驟S13具體包括:
C1、讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)識(shí)位判斷所述緩沖器接收到的數(shù)據(jù)串是否發(fā)送完成。
C2、在所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
具體地,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送后,讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)志位判斷接收到的數(shù)據(jù)串是否發(fā)送。當(dāng)讀取到預(yù)置的發(fā)送標(biāo)志位表示確定所述緩沖器接收到的數(shù)據(jù)串已經(jīng)發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。當(dāng)讀取到預(yù)置的發(fā)送標(biāo)志位表示所述緩沖器接收到的數(shù)據(jù)串還未結(jié)束發(fā)送,則繼續(xù)等待將下一段數(shù)據(jù)串發(fā)送至緩沖器。
進(jìn)一步地,所述C1具體包括:
C11、讀取預(yù)置的發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成。例如,可將第一預(yù)置值設(shè)為1。
C12、在所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,所述第二預(yù)置值與所述第一預(yù)置值不等。例如,可將第二預(yù)置值設(shè)為0。
對(duì)應(yīng)地,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器之前,包括:
C13、將所述發(fā)送標(biāo)志位從所述第一預(yù)置值重置為所述第二預(yù)置值。
具體地,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送后,讀取預(yù)置的發(fā)送標(biāo)志位,當(dāng)所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,繼續(xù)等待發(fā)送下一段數(shù)據(jù)串至緩沖器當(dāng)所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定緩沖器接收到的數(shù)據(jù)串已經(jīng)發(fā)送完成,將所述發(fā)送標(biāo)志位從所述第一預(yù)置值重置為第二預(yù)置值,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
可選地,為了提高發(fā)送效率,避免無(wú)效等待,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器之前,還包括:
D1、當(dāng)判定所述緩沖器接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,繼續(xù)等待發(fā)送下一段數(shù)據(jù)串時(shí),獲取發(fā)送所述緩沖器接收到的數(shù)據(jù)串的發(fā)送時(shí)間。
D2、當(dāng)所述發(fā)送時(shí)間大于或等于預(yù)設(shè)時(shí)間閾值時(shí),重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串。需要指出的是,在重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串時(shí),由于緩沖器在上一次接收時(shí)可能已存儲(chǔ)了所述數(shù)據(jù)串的部分?jǐn)?shù)據(jù),因此,為了避免緩沖器存儲(chǔ)錯(cuò)誤的數(shù)據(jù)串,則在緩沖器接收到新的數(shù)據(jù)串的第一個(gè)數(shù)據(jù)時(shí),若判斷出緩沖器已存儲(chǔ)有數(shù)據(jù),則采用新接收的數(shù)據(jù)串覆蓋緩沖器已存儲(chǔ)的數(shù)據(jù)。
D3、當(dāng)重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串的次數(shù)大于預(yù)設(shè)次數(shù)時(shí),提示發(fā)送失敗。
具體地,當(dāng)讀取的預(yù)置發(fā)送標(biāo)志位為第二預(yù)置值,判定接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成時(shí),獲取發(fā)送所述緩沖器接收到的數(shù)據(jù)串的發(fā)送時(shí)間,當(dāng)所述發(fā)送時(shí)間小于預(yù)設(shè)時(shí)間閾值時(shí),繼續(xù)等待發(fā)送結(jié)束;當(dāng)所述發(fā)送時(shí)間大于或等于預(yù)設(shè)時(shí)間閾值時(shí),重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串。
具體地,以一個(gè)應(yīng)用場(chǎng)景為例,在控制器接收到數(shù)據(jù)包后,獲取緩沖器的個(gè)數(shù)為3個(gè),控制器根據(jù)緩沖器的個(gè)數(shù)將can數(shù)據(jù)包的原始數(shù)據(jù)拆分成3個(gè)數(shù)據(jù)串,根據(jù)3個(gè)數(shù)據(jù)串的順序配置3個(gè)緩沖器的優(yōu)先級(jí),順序在最前的數(shù)據(jù)串1存入優(yōu)先級(jí)最高的緩沖器1,啟動(dòng)發(fā)送數(shù)據(jù)串1。在將數(shù)據(jù)串2發(fā)送至緩沖器2之前,控制器讀取預(yù)置的發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為1時(shí),判定緩沖器1接收到的數(shù)據(jù)串1發(fā)送完成,控制器將所述發(fā)送標(biāo)志位重置為0,再將數(shù)據(jù)串2發(fā)送至緩沖器2,啟動(dòng)發(fā)送數(shù)據(jù)串2;若在將數(shù)據(jù)串2發(fā)送至緩沖器2之前讀取預(yù)置的發(fā)送標(biāo)志位為0,判定緩沖器1接收到的數(shù)據(jù)串1還未發(fā)送完成。獲取發(fā)送數(shù)據(jù)串1的發(fā)送時(shí)間,當(dāng)所述發(fā)送時(shí)間大于或等于預(yù)設(shè)時(shí)間閾值時(shí),在將數(shù)據(jù)串2發(fā)送至緩沖器2之前,控制器重新啟動(dòng)發(fā)送緩沖器1接收到的數(shù)據(jù)串1。當(dāng)重新啟動(dòng)發(fā)送緩沖器1接收到的數(shù)據(jù)串1的次數(shù)大于預(yù)設(shè)次數(shù)時(shí),提示發(fā)送失敗。
本發(fā)明第一實(shí)施例中,獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,通過(guò)讀取發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定接收到的數(shù)據(jù)串發(fā)送完成,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。在所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,下一段數(shù)據(jù)串繼續(xù)等待發(fā)送,從而確保每一段數(shù)據(jù)串能夠有序的發(fā)送完成,提高了發(fā)送數(shù)據(jù)的準(zhǔn)確性。
應(yīng)理解,在本發(fā)明實(shí)施例中,上述各過(guò)程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過(guò)程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)施過(guò)程構(gòu)成任何限定。
實(shí)施例二:
圖2示出了本發(fā)明第二實(shí)施例提供的一種數(shù)據(jù)包處理裝置的結(jié)構(gòu)圖,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。
該數(shù)據(jù)包處理裝置包括:原始數(shù)據(jù)獲取單元21和數(shù)據(jù)串發(fā)送單元22,其中:
原始數(shù)據(jù)獲取單元21,用于獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,所述N為整數(shù),N大于或等于1。
其中,在存在多個(gè)緩沖器時(shí),為了均衡使用緩沖器而避免過(guò)度使用某一個(gè)緩沖器,所述原始數(shù)據(jù)獲取單元21具體包括:
第一獲取模塊,用于獲取緩沖器的個(gè)數(shù)以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
第一拆分模塊,用于在緩沖器的個(gè)數(shù)為N時(shí),將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串。
具體地,獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并獲取緩沖器的個(gè)數(shù),當(dāng)緩沖器的個(gè)數(shù)為N時(shí),根據(jù)緩沖器的個(gè)數(shù)將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串。需要指出的是,拆分后的N段數(shù)據(jù)串的大小小于緩沖器的最大容量。通常,當(dāng)存在多個(gè)緩沖器時(shí),其最大容量是相等的,此時(shí),可將原始數(shù)據(jù)拆分為N段字節(jié)大小相等的數(shù)據(jù)串,當(dāng)然,若原始數(shù)據(jù)的字節(jié)不足以均分N段字節(jié)大小相等的數(shù)據(jù)串,則首先拆分為N-1段字節(jié)大小相等的數(shù)據(jù)串,再將剩余的字節(jié)作為第N段數(shù)據(jù)串。例如,將原始數(shù)據(jù)拆分為3(N=3)段字節(jié)大小為8個(gè)字節(jié)的數(shù)據(jù)串。當(dāng)然,若拆分了2段字節(jié)大小為8個(gè)字節(jié)的數(shù)據(jù)串之后,剩余的數(shù)據(jù)串不足8個(gè)字節(jié),則剩余的字節(jié)將作為第3段數(shù)據(jù)串。
可選地,在只有一個(gè)緩沖器時(shí),為了避免發(fā)送至緩沖器的數(shù)據(jù)串的大小超過(guò)緩沖器的最大容量,所述原始數(shù)據(jù)獲取單元21具體包括:
第二獲取模塊,獲取緩沖器的容量以及原始數(shù)據(jù)包中的原始數(shù)據(jù);
第二拆分模塊,將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串,以使拆分后的數(shù)據(jù)串的大小小于或等于所述緩沖器的容量。具體地,判斷所述原始數(shù)據(jù)的大小是否超過(guò)緩沖器的最大容量,并在所述原始數(shù)據(jù)的大小超過(guò)緩沖器的最大容量時(shí),將所述原始數(shù)據(jù)包中的原始數(shù)據(jù)拆分為N段數(shù)據(jù)串,以使拆分后的每段數(shù)據(jù)串的大小都小于或等于所述緩沖器的容量。
數(shù)據(jù)串發(fā)送單元22,用于將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器。
具體地,在將獲取的原始數(shù)據(jù)包中的原始數(shù)據(jù)根據(jù)緩沖器的個(gè)數(shù)或容量拆分為N段數(shù)據(jù)串之后,將所述N段數(shù)據(jù)串按照原始數(shù)據(jù)的先后順序發(fā)送至緩沖器,例如,首先將第1段數(shù)據(jù)串發(fā)送至緩沖器,再發(fā)送第2段數(shù)據(jù)串。
可選地,為了能夠確保拆分的數(shù)據(jù)串按順序發(fā)送,所述數(shù)據(jù)包處理裝置包括:
標(biāo)號(hào)單元,用于將所述拆分為N段數(shù)據(jù)串按原始數(shù)據(jù)的先后順序標(biāo)號(hào)。
具體地,在將獲取的原始數(shù)據(jù)包中的原始數(shù)據(jù)根據(jù)緩沖器的個(gè)數(shù)或容量拆分為N段數(shù)據(jù)串之后,根據(jù)原始數(shù)據(jù)的先后順序?qū)段數(shù)據(jù)串從小到大標(biāo)號(hào),此時(shí),數(shù)據(jù)串發(fā)送單元22將按標(biāo)號(hào)從小到大將N段數(shù)據(jù)串順序發(fā)送至緩沖器。
可選地,當(dāng)緩沖器個(gè)數(shù)為N時(shí),為了能夠確保拆分的數(shù)據(jù)串按順序發(fā)送,所述數(shù)據(jù)串發(fā)送單元22包括:
優(yōu)先級(jí)配置模塊,用于配置N個(gè)緩沖器的優(yōu)先級(jí)。
第二數(shù)據(jù)串發(fā)送模塊,用于按照數(shù)據(jù)串的先后順序以及緩沖器的高低優(yōu)先級(jí)設(shè)置一一對(duì)應(yīng)關(guān)系,按照所述對(duì)應(yīng)關(guān)系將所述N段數(shù)據(jù)串發(fā)送至對(duì)應(yīng)的緩沖器。
具體地,將排序在第1的數(shù)據(jù)串設(shè)置與優(yōu)先級(jí)最高的緩沖器對(duì)應(yīng),排序在第2的數(shù)據(jù)串設(shè)置與優(yōu)先級(jí)次高的緩沖器對(duì)應(yīng),其他依次類推。由于緩沖器的優(yōu)先級(jí)越高,其發(fā)送數(shù)據(jù)串的順序越靠前,因此,保證了排序在前的數(shù)據(jù)串優(yōu)先發(fā)送。
數(shù)據(jù)串發(fā)送單元22還用于,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
具體地,當(dāng)所述緩沖器接收到的數(shù)據(jù)串確認(rèn)發(fā)送結(jié)束之后,再將下一段數(shù)據(jù)發(fā)送至緩沖器,這樣,能夠保證數(shù)據(jù)串已全部發(fā)送,進(jìn)而保證接收方能夠接收到完整的數(shù)據(jù)串。
為了進(jìn)一步確認(rèn)所述緩沖器接收到的數(shù)據(jù)串已經(jīng)發(fā)送結(jié)束,所述數(shù)據(jù)串發(fā)送單元22具體包括:
發(fā)送判斷模塊,用于讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)識(shí)位判斷所述緩沖器接收到的數(shù)據(jù)串是否發(fā)送完成;
數(shù)據(jù)串發(fā)送模塊,用于在所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
具體地,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送后,讀取預(yù)置的發(fā)送標(biāo)志位,根據(jù)所述發(fā)送標(biāo)志位判斷接收到的數(shù)據(jù)串是否發(fā)送。當(dāng)讀取到預(yù)置的發(fā)送標(biāo)志位表示確定所述緩沖器接收到的數(shù)據(jù)串已經(jīng)發(fā)送完成之后,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。當(dāng)讀取到預(yù)置的發(fā)送標(biāo)志位表示所述緩沖器接收到的數(shù)據(jù)串還未結(jié)束發(fā)送,則繼續(xù)等待將下一段數(shù)據(jù)串發(fā)送至緩沖器。
進(jìn)一步地,所述發(fā)送判斷模塊具體包括:
發(fā)送完成判定模塊,用于讀取預(yù)置的發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串發(fā)送完成;例如,可將第一預(yù)置值設(shè)為1。在所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定所述緩沖器接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,所述第二預(yù)置值與所述第一預(yù)置值不等。例如,可將第二預(yù)置值設(shè)為0。
對(duì)應(yīng)地,所述數(shù)據(jù)包處理裝置還包括:
重置單元,用于將所述發(fā)送標(biāo)志位從所述第一預(yù)置值重置為所述第二預(yù)置值。
具體地,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送后,讀取預(yù)置的發(fā)送標(biāo)志位,當(dāng)所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,繼續(xù)等待發(fā)送下一段數(shù)據(jù)串至緩沖器當(dāng)所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定緩沖器接收到的數(shù)據(jù)串已經(jīng)發(fā)送完成,將所述發(fā)送標(biāo)志位從所述第一預(yù)置值重置為第二預(yù)置值,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。
可選地,為了提高發(fā)送效率,避免無(wú)效等待,所述數(shù)據(jù)包處理裝置還包括:
時(shí)間獲取單元,用于當(dāng)判定所述緩沖器接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,繼續(xù)等待發(fā)送下一段數(shù)據(jù)串時(shí),獲取發(fā)送所述緩沖器接收到的數(shù)據(jù)串的發(fā)送時(shí)間。
重啟單元,用于當(dāng)所述發(fā)送時(shí)間大于或等于預(yù)設(shè)時(shí)間閾值時(shí),重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串。需要指出的是,在重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串時(shí),由于緩沖器在上一次接收時(shí)可能已存儲(chǔ)了所述數(shù)據(jù)串的部分?jǐn)?shù)據(jù),因此,為了避免緩沖器存儲(chǔ)錯(cuò)誤的數(shù)據(jù)串,則在緩沖器接收到新的數(shù)據(jù)串的第一個(gè)數(shù)據(jù)時(shí),若判斷出緩沖器已存儲(chǔ)有數(shù)據(jù),則采用新接收的數(shù)據(jù)串覆蓋緩沖器已存儲(chǔ)的數(shù)據(jù)。
提醒單元,用于當(dāng)重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串的次數(shù)大于預(yù)設(shè)次數(shù)時(shí),提示發(fā)送失敗。
具體地,當(dāng)讀取的預(yù)置發(fā)送標(biāo)志位為第二預(yù)置值,判定接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成時(shí),獲取發(fā)送所述緩沖器接收到的數(shù)據(jù)串已用的發(fā)送時(shí)間,當(dāng)所述已用的發(fā)送時(shí)間小于預(yù)設(shè)時(shí)間閾值時(shí),繼續(xù)等待發(fā)送結(jié)束;當(dāng)所述已用的發(fā)送時(shí)間大于或等于預(yù)設(shè)時(shí)間閾值時(shí),重新啟動(dòng)發(fā)送所述緩沖器接收到的數(shù)據(jù)串。
本發(fā)明第二實(shí)施例中,獲取原始數(shù)據(jù)包中的原始數(shù)據(jù),并拆分為N段數(shù)據(jù)串,將所述N段數(shù)據(jù)串按照先后順序發(fā)送至緩沖器,在所述緩沖器接收到的數(shù)據(jù)串發(fā)送結(jié)束之后,通過(guò)讀取發(fā)送標(biāo)志位,在所述發(fā)送標(biāo)志位為第一預(yù)置值時(shí),判定接收到的數(shù)據(jù)串發(fā)送完成,再將下一段數(shù)據(jù)串發(fā)送至緩沖器。在所述發(fā)送標(biāo)志位為第二預(yù)置值時(shí),判定接收到的數(shù)據(jù)串沒(méi)有發(fā)送完成,下一段數(shù)據(jù)串繼續(xù)等待發(fā)送,從而確保每一段數(shù)據(jù)串能夠有序的發(fā)送完成,提高了發(fā)送數(shù)據(jù)的準(zhǔn)確性。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。