一種文件傳輸方法及傳輸裝置的製作方法
2023-09-10 19:55:30
專利名稱:一種文件傳輸方法及傳輸裝置的製作方法
技術領域:
本發明涉及數據通信領域,尤其涉及在文件傳輸過程中提高傳輸效率的技術。
背景技術:
隨著網絡通信系統的發展,客戶端與客戶端之間、客戶端與伺服器之間、或者伺服器與伺服器之間需要進行頻繁的交互,而交互的數據通常都是以文件的形式,並被打成數據包後在網絡中進行傳輸的。
在傳輸之前,為了提高傳輸速度,減少對網絡資源的佔用,壓縮技術被廣泛應用。數據包被壓縮後,若壓縮效率較高(即壓縮率較低),壓縮後的數據包大小將顯著減小,從而可以提高傳輸速度和效率。
但是,本發明的發明人發現,如果有些數據包在被壓縮後,其壓縮效率非
常低(即壓縮率高),甚至於壓縮效率為零;那麼對於這些數據包,壓縮前後的大小變化不大,但是卻消耗了很多的壓縮和解壓縮的時間,導致傳輸效率降低。
發明內容
本發明實施例提供了一種文件傳輸方法和傳輸裝置,以整體提高文件的傳輸效率。
一種文件傳輸方法,包括
將需要傳輸的文件分為設定大小的傳輸數據包後,確定所述傳輸數據包的壓縮率;
若所述壓縮率小於設定值,則對所述傳輸數據包進行壓縮後傳輸;否則,直接將所述傳輸數據包進行傳輸。
所述確定所述傳輸數據包的壓縮率,具體包括
確定所述傳輸數據包中的一個傳輸數據包的壓縮率,以該傳輸數據包的
壓縮率作為所述傳輸數據包的壓縮率;或者
確定各傳輸數據包的壓縮率,以各傳輸數據包的壓縮率的平均值作為所
述傳輸數據包的壓縮率。
所述確定所述傳輸數據包中的 一個傳輸數據包的壓縮率,具體為確定所述傳輸數據包中第 一個要被傳輸的傳輸數據包的壓縮率;或者隨機抽取所述傳輸數據包中的一個傳輸數據包,確定該抽取的傳輸數據
包的壓縮率。
確定所述傳輸數據包中的某個數據包的壓縮率的具體方法為對該傳輸數據包進行壓縮,得到壓縮後的數據包;根據壓縮後的數據包的大小以及壓縮前的數據包的大小確定該數據包的壓縮率。
或者,確定所述傳輸數據包中的某個數據包的壓縮率的具體方法為依次獲取該傳輸數據包中的設定字節的數據,若獲取的數據與之前獲取
的數據不同,則記錄該數據到哈希表中;否則,記錄該數據的位置到位置記
錄表;
根據所述哈希表以及位置記錄表的大小確定該傳輸數據包的壓縮率。
一種文件傳輸裝置,包括
數據包生成模塊,用於將需要傳輸的文件分為設定大小的傳輸數據包;
壓縮率確定模塊,用於確定所述傳輸數據包的壓縮率;
數據包壓縮傳輸模塊,用於判斷所述壓縮率確定模塊確定的壓縮率是否
大於設定值;若是,則對所述傳輸數據包進行壓縮後傳輸;否則,直接將所
述傳輸數據包進行傳輸。
本發明實施例由於在進行數據包傳輸之前,對數據包的壓縮率先進行判斷;如果確定壓縮率較低(比如壓縮率小於某個設定值),則對傳輸數據包進 行壓縮後傳輸,此時,由於傳輸數據包壓縮率低、壓縮效率高,需要傳輸的 數據被大大壓縮,從而節約了傳輸時間;如果判斷出壓縮率較高、壓縮效率 低,由於壓縮前後並不能對需要傳輸的數據有顯著的減少,則不進行壓縮處 理,直接進行傳輸,從而節省了發送方的壓縮時間,以及接收方的解壓時間, 從整體上提高了傳輸效率。
由於根據某個或某幾個傳輸數據包(比如第一個傳輸數據包)的壓縮率 來確定文件的所有傳輸數據包的壓縮率,可以節省壓縮率的判斷時間,從而 更進一步提高了系統對文件的傳輸效率。
圖1為本發明實施例的文件傳輸方法流程圖2為本發明實施例的文件傳輸裝置內部結構示意具體實施例方式
本發明實施例提供的技術方案為在進行數據包傳輸之前,對數據包的壓 縮率先進行判斷;如果可以獲得一個較低的壓縮率(比如壓縮率小於某個設 定值),則對傳輸數據包進行壓縮後傳輸,此時,由於傳輸數據包壓縮率高, 需要傳輸的數據被大大壓縮,從而節約了傳輸時間;如果判斷出壓縮率較高, 由於壓縮前後並不能對需要傳輸的數據有顯著的減少,則不進行壓縮處理, 直接進行傳輸,從而節省了發送方的壓縮時間,以及接收方的解壓時間,從 整體上提高了傳輸效率。
下面結合附圖詳細說明本發明實施例的具體技術方案。 本發明實施例提供的一種文件傳輸方法,流程圖如圖1所示,包括如下 步驟
S101、發送方將需要傳輸的文件分成傳輸數據包。對於需要傳輸的文件,通常都要將其分成若干個固定大小的傳輸數據包, 然後按這些傳輸數據包生成的序列進行傳輸數據包的發送。
S102、發送方在發送傳輸數據包之前,確定傳輸數據包的壓縮率。 在發送傳輸數據包之前,發送方可以採用多種方法確定傳輸數據包的壓 縮率
例如,可以對所有的傳輸數據包進行壓縮,根據壓縮前的傳輸數據包的 大小,以及壓縮後的傳輸數據包的大小確定壓縮率。比如, 一個文件被分為 100個傳輸數據包,對這100個傳輸數據包進行壓縮,得到100個壓縮傳輸數 據包,其中,第i個傳輸數據包的壓縮率w根據壓縮率的定義公式l得到
w = c/d (1)
其中,c為第i個傳輸數據包壓縮後的包數據大小,d為第i個傳輸數據 包壓縮前的包數據大小。第i個傳輸數據包的壓縮效率w^l-w,可以看出, 當數據包中的內容可以被大量壓縮時,其壓縮效率較高,其壓縮率較低。
根據每個傳輸數據包的壓縮率可以計算這100個傳輸數據包的平均壓縮 率,以該平均壓縮率作為該文件所分成的傳輸數據包的壓縮率。
在實際應用中,本發明的發明人發現對於同一個文件中的數據包,各數 據包之間的壓縮率是相關的;因此,為了進一步減少確定壓縮率的時間,提 高系統傳輸效率,可以從文件所分成的所有傳輸數據包中選擇一個或幾個傳 輸數據包計算壓縮率,再以這一個或幾個傳輸數據包的壓縮率作為該文件所 分成的所有傳輸數據包的壓縮率。
比如,可以選取文件所分成的傳輸數據包中的第 一個傳輸數據包確定壓 縮率,或者隨機抽取文件所分成的傳輸數據包中的一個傳輸數據包確定壓縮 率。通常可以認為,該選取或者抽取的傳輸數據包的壓縮率與同一文件的其 它傳輸數據包的壓縮率相差不大,因此,不必對每個傳輸數據包確定壓縮率, 而是選取其中的某個或某幾個傳輸數據包確定壓縮率,以某個或某幾個傳輸 數據包的壓縮率作為該文件所分成的所有傳輸數據包的壓縮率確定其中 一個傳輸數據包的壓縮率的具體方法可以是,對該傳輸數據包 進行壓縮後,才艮據壓縮後的數據包大小以及壓縮前的數據包大小確定該傳輸
數據包的壓縮率;或者,釆用如下方法針對LZ77壓縮算法的一種改進方法來 計算壓縮率
依次獲取傳輸數據包中的設定字節(比如3個字節)的數據,若獲取的 數據與之前獲取的數據不同,則記錄該數據到哈希表中;否則,記錄該數據 的位置到位置記錄表(即當發現有重複的數據則記錄該數據的位置到位置記 錄表);根據所述哈希表以及位置記錄表的大小確定該傳輸數據包的壓縮率 W:
W= (a+b)/d (2) 其中,a為哈希表所佔字節數、b為位置記錄表所佔字節數,d為壓縮前 該傳輸數據包所佔字節數。由於對數據包中的數據進行一次掃描後,所獲得 的哈希表和位置記錄表,記錄了數據包中重複出現元素出現的情況;而通常 的壓縮算法都是對重複出現的元素進行壓縮,所以根據哈希表和位置記錄表 的大小即可大致確定該傳輸數據包的壓縮率,從而不必對數據包完成壓縮後 再判斷壓縮比,更進一步節約了壓縮比判斷時間、提高了傳輸效率。
5103、 如果確定的壓縮率小於設定值,則發送方將壓縮傳輸數據包進行 發送;否則,發送方對傳輸數據包不進行壓縮,直接進行發送。
在通過上述步驟S102確定了傳輸數據包的壓縮率後,可以將確定的壓縮 率與預先設定的設定值(比如0.8)進行比較;若壓縮率足夠小,比如小於設 定值,則發送方將文件的所分成的所有的傳輸數據包進行壓縮後發送;否則, 將傳輸數據包直接進行發送。
例如,針對某個文件所分成的100個傳輸數據包,在確定第一個傳輸數 據包的壓縮率大於設定值後,則可以依次對後續傳輸數據包進行壓縮後發送。
5104、 接收方若接收到壓縮的數據包,則解壓後將傳輸數據包合併為文 件;若接收到沒有被壓縮的傳輸數據包,則直接合併文件,從而節省解壓時間。
接收方若接收到壓縮的數據包,則對壓縮包進行解壓後獲得傳輸數據包,
再根據傳輸數據包合併文件;若接收到沒有被壓縮的傳輸數據包,則接收方 可以根據獲得的傳輸數據包直接合併文件,從而節省解壓時間。
假設一個1M大小的文件被分為100個傳輸數據包,其數據包的壓縮率為 95%;如果採用現有技術對這些傳輸數據包進行壓縮後傳輸,整個傳輸過程所 耗時間f。為
,o = ^ + /2 + ~ (3) 其中,^為100個傳輸數據包的壓縮時間,,2為100個傳輸數據包的解壓 時間,^為數據包在網絡間傳遞的時間。假設在網絡間傳遞1M數據的時間為 16s,則壓縮後數據大小為1Mx95%,傳遞時間為16x95%=15.2s;再4叚設壓縮 時間^與解壓時間/2為ls,則採用現有技術對這些傳輸數據包進行壓縮後傳 輸,整個傳輸過程所耗時間^。為17.2s。
如果採用本發明實施例的方法,在判斷其數據包的壓縮率(0.95)大於設 定值0.8時,不進行壓縮直接進行傳送,整個傳輸過程所耗時間V為
V = V + G, (4)
其中,V為判斷壓縮率的時間,V為不壓縮的數據在網絡間傳遞的時間。 假設採用對所有數據包進行壓縮後判斷壓縮率的方法,則上述的1M文件的 V=ls, V=16s,那麼整個傳輸過程所耗時間V為17s,比現有技術節約0,2s。
如果採用對第一個或者某個數據包進行壓縮後判斷壓縮率的方法,由於 只需要對一個數據包進行壓縮後判斷壓縮率,則V將大大減少,V=0.1s, r3'=16s,那麼整個傳輸過程所耗時間V為16.1s,比現有技術節約l.ls。如果 採用本發明實施例的方法傳輸大小為IOOM、壓縮率為95%的文件,可以比現 有技術節約大致199s,大大提高了傳輸效率;而同時對於壓縮率低的文件, 仍然採用壓縮後傳輸,可以保證其傳輸效率。尤其對於網絡帶寬較小的環境,
9在傳輸尺寸大、而壓縮率高的文件時,需要較長時間,那麼採用本發明實施 例的方法,能夠避免壓縮效率低、而耗時長的壓縮與解壓時間,可以大大縮 短文件的傳輸時間,提高傳輸效率。
經過計算,本發明的發明人發現將壓縮率閾值設置為80%較優;即當判 斷傳輸數據包的壓縮率小於80%,則進行壓縮後發送;否則,直接進行發送。 本領域技術人員也可以根據實際情況將壓縮率閾值設置為其它值。
本領域技術人員可以理解,雖然上述說明中,為便於理解,對方法的步 驟採用了順序性描述,但是應當指出,對於上述步驟的順序並不作嚴格限制。
本發明實施例提供的一種文件傳輸裝置,內部結構如圖2所示,包括 數據包生成模塊201、壓縮率確定模塊202、數據包壓縮傳輸模塊203。
數據包生成模塊201用於將需要傳輸的文件分為設定大小的傳輸數據包。
壓縮率確定模塊202用於確定所述傳輸數據包的壓縮率。壓縮率確定模 塊202確定所述傳輸數據包的壓縮率的具體方法可以採用如上述步驟S102中 的方法,例如,可以包括如下單元之一
第 一單元,用於確定所述傳輸數據包中第 一個要被傳輸的傳輸數據包的 壓縮率,以所述第一個要被傳輸的傳輸數據包的壓縮率作為所有傳輸數據包 的壓縮率。
第二單元,用於確定各傳輸數據包的壓縮率,以各傳輸數據包的壓縮率 的平均值作為所述傳輸數據包的壓縮率。
第三單元,用於隨機抽取所述傳輸數據包中的一個傳輸數據包,確定該 抽取的傳輸數據包的壓縮率,以該抽取的傳輸數據包的壓縮率作為所有傳輸 數據包的壓縮率。
述,此處不再贅述。
數據包壓縮傳輸模塊203用於判斷所述壓縮率確定模塊確定的壓縮率是 否小於設定值;若是,則對所述傳輸數據包進行壓縮後傳輸;否則,直接將所述傳輸數據包進行傳輸。數據包壓縮傳輸模塊203中設置的設定值具體可 以為80%,也可以是i殳定的其它值。在實際應用中,如果壓縮率確定才莫塊202 在確定傳輸數據包的壓縮率的過程中,已經針對某個或某些或全部傳輸數據 包生成了壓縮包,那麼數據包壓縮傳輸模塊203在需要進行壓縮傳輸時,不 必再重複進行壓縮,而是利用已經生成的壓縮包可以加快壓縮傳輸的時間。
本發明實施例由於在進行數據包傳輸之前,對數據包的壓縮率先進行判 斷;如果確定壓縮率較低(比如壓縮率小於某個設定值),則對傳輸數據包進 行壓縮後傳輸,此時,由於傳輸數據包壓縮率低,需要傳輸的數據被大大壓 縮,從而節約了傳輸時間;如果判斷出壓縮率較高,由於壓縮前後並不能對 需要傳輸的數據有顯著的減少,則不進行壓縮處理,直接進行傳輸,從而節 省了發送方的壓縮時間,以及接收方的解壓時間,從整體上提高了傳輸效率。
由於根據某個或某幾個傳輸數據包(比如第一個傳輸數據包)的壓縮率 來確定文件的所有傳輸數據包的壓縮率,可以節省壓縮率的判斷時間,從而 更進一步提高了系統對文件的傳輸效率。
是可以通過程序來指令相關的硬體來完成,該程序可以存儲於一計算機可讀 取存儲介質中,如ROM/RAM、磁碟、光碟等。
還可以理解的是,附圖或實施例中所示的裝置結構僅僅是示意性的,表 示邏輯結構。其中作為分離部件顯示的模塊可能是或者可能不是物理上分開 的,作為模塊顯示的部件可能是或者可能不是物理模塊。
以上所述僅是本發明的優選實施方式,應當指出,對於本技術領域的普 通技術人員來說,在不脫離本發明原理的前提下,還可以作出若干改進和潤 飾,這些改進和潤飾也應^L為本發明的保護範圍。
權利要求
1、一種文件傳輸方法,其特徵在於,包括將需要傳輸的文件分為設定大小的傳輸數據包後,確定所述傳輸數據包的壓縮率;若所述壓縮率小於設定值,則對所述傳輸數據包進行壓縮後傳輸;否則,直接將所述傳輸數據包進行傳輸。
2、 如權利要求1所述的方法,其特徵在於,所述確定所述傳輸數據包的 壓縮率,具體包括確定所述傳輸數據包中的一個傳輸數據包的壓縮率,以該傳輸數據包的 壓縮率作為所述傳輸數據包的壓縮率;或者確定各傳輸數據包的壓縮率,以各傳輸數據包的壓縮率的平均值作為所 述傳輸數據包的壓縮率。
3、 如權利要求2所述的方法,其特徵在於,所述確定所述傳輸數據包中 的一個傳輸數據包的壓縮率,具體為確定所述傳輸數據包中第一個要被傳輸的傳輸數據包的壓縮率;或者 隨機抽取所述傳輸數據包中的一個傳輸數據包,確定該抽取的傳輸數據 包的壓縮率。
4、 如權利要求2或3所述的方法,其特徵在於,確定所述傳輸數據包中 的某個數據包的壓縮率的具體方法為對該傳輸數據包進行壓縮,得到壓縮後的數據包; 根據壓縮後的數據包的大小以及壓縮前的數據包的大小確定該數據包的壓縮率。
5、 如權利要求2或3所述的方法,其特徵在於,確定所述傳輸數據包中 的某個數據包的壓縮率的具體方法為依次獲取該傳輸數據包中的設定字節的數據,若獲取的數據與之前獲取 的數據不同,則記錄該數據到哈希表中;否則,記錄該數據的位置到位置記錄表;確定所述哈希表和位置記錄表所佔字節數之和;根據所述哈希表和位置記錄表所佔字節數之和與壓縮前的數據包的所佔 字節數的比值確定該傳輸lt據包的壓縮率。
6、 如權利要求5所述的方法,其特徵在於,所述設定字節具體為3個字節。
7、 如權利要求l-3任一所述的方法,其特徵在於,所述設定值為0.8。
8、 一種文件傳輸裝置,其特徵在於,包括數據包生成模塊,用於將需要傳輸的文件分為設定大小的傳輸數據包; 壓縮率確定模塊,用於確定所述傳輸數據包的壓縮率; 數據包壓縮傳輸模塊,用於判斷所述壓縮率確定模塊確定的壓縮率是否大於設定值;若是,則對所述傳輸數據包進行壓縮後傳輸;否則,直接將所述傳輸數據包進行傳輸。
9、 如權利要求8所述的裝置,其特徵在於,所述壓縮率確定模塊具體用於確定所述傳輸數據包中第一個要被傳輸的 傳輸數據包的壓縮率,以所述第一個要被傳輸的傳輸數據包的壓縮率作為所 有傳輸數據包的壓縮率。
10、 如權利要求8所述的裝置,其特徵在於,所述設定值為0.8。
全文摘要
本發明涉及數據通信領域,尤其涉及在文件傳輸過程中提高傳輸效率的技術。本發明提供了一種文件傳輸裝置及方法,包括將需要傳輸的文件分為設定大小的傳輸數據包後,確定所述傳輸數據包的壓縮率;若所述壓縮率小於設定值,則對所述傳輸數據包進行壓縮後傳輸;否則,直接將所述傳輸數據包進行傳輸。由於在進行數據包傳輸之前,對數據包的壓縮率先進行判斷;如果確定壓縮率較低,則對傳輸數據包進行壓縮後傳輸,此時,需要傳輸的數據被大大壓縮,從而節約了傳輸時間;如果判斷出壓縮率較高,則不進行壓縮處理,直接進行傳輸,從而節省了發送方的壓縮時間,以及接收方的解壓時間,從整體上提高了傳輸效率。
文檔編號H04L1/00GK101552652SQ20091008440
公開日2009年10月7日 申請日期2009年5月13日 優先權日2009年5月13日
發明者斌 任, 餘立華, 軍 劉, 飛 吳, 吳小廣, 斌 王, 陳喜明 申請人:北京交大思源科技有限公司