專利名稱:數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、終端和數(shù)據(jù)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)發(fā)送裝置、一種數(shù)據(jù)接收裝置、一種終端和一種數(shù)據(jù)傳輸方法。
背景技術(shù):
在相關(guān)技術(shù)中,在終端之間進行數(shù)據(jù)傳輸時,比如利用藍牙、紅外等方式進行文件傳輸,特別是大文件傳輸時,若通過單線程來進行數(shù)據(jù)傳輸?shù)?,則存在帶寬利用率不高,網(wǎng)絡(luò)達不到最大負載的問題,那么,在終端之間進行數(shù)據(jù)傳輸時,特別是大文件傳輸時,傳輸速率達不到最大可傳輸速率,這樣,會增加數(shù)據(jù)傳輸?shù)臅r間,消耗用戶的耐心,使用戶得不到好的體驗,若采用多線程來進行數(shù)據(jù)傳輸,則存在過度占用系統(tǒng)資源的問題,反而造成系統(tǒng)緩慢等現(xiàn)象,同時無法使用戶得到良好的使用體驗。因此,需要一種新的數(shù)據(jù)傳輸技術(shù),可以充分利用網(wǎng)絡(luò)資源,提高數(shù)據(jù)傳輸速度。
發(fā)明內(nèi)容
本發(fā)明正是基于上述問題,提出了一種新的數(shù)據(jù)傳輸技術(shù),可以充分利用網(wǎng)絡(luò)資源,提高數(shù)據(jù)傳輸速度。有鑒于此,本發(fā)明提出了一種數(shù)據(jù)發(fā)送裝置,包括:協(xié)議確認單元,根據(jù)所述數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間采用的連接方式,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于所述通信協(xié)議的最大傳輸單元;數(shù)據(jù)分割單元,若待傳輸數(shù)據(jù)小于或等于所述最大傳輸單元的值,將所述待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若所述待傳輸數(shù)據(jù)大于所述最大傳輸單元的值,則按照所述最大傳輸單元的值分割所述待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊;線程建立單元,在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,所述傳輸線程的數(shù)量對應(yīng)于所述待傳輸數(shù)據(jù)塊;數(shù)據(jù)塊發(fā)送單元,將所述待傳輸數(shù)據(jù)塊通過所述傳輸線程傳輸至所述數(shù)據(jù)接收裝置。`在該技術(shù)方案中,利用了最大傳輸單元(MTU,Maximum Transmission Unit),是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,那么,當(dāng)進行傳輸?shù)臄?shù)據(jù)大于這個值時,就會影響到傳輸時的速度,而當(dāng)傳輸?shù)臄?shù)據(jù)小于或等于這個值時,則可以在不影響傳輸速度的同時,最大可能地利用帶寬資源,從而提升數(shù)據(jù)的傳輸速度。但傳輸?shù)臄?shù)據(jù)往往會大于最大傳輸單元,因此,可以將最大傳輸單元作為標(biāo)準(zhǔn)大小,對大于該值的數(shù)據(jù)進行切害!],從而保證最后進行傳輸?shù)臄?shù)據(jù)或數(shù)據(jù)塊均小于或等于最大傳輸單元的值。另外,對于傳輸線程的數(shù)量,是與切割得到的數(shù)據(jù)塊的數(shù)量相關(guān)的,這里的相關(guān)是指,可以預(yù)示設(shè)置好數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間的對應(yīng)關(guān)系,比如數(shù)據(jù)塊小于或等于20個時,建立5個線程,數(shù)據(jù)塊大于20個小于200個時,建立10個線程等,當(dāng)然,也可以在數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間建立一個關(guān)系式,然后根據(jù)每次得到的數(shù)據(jù)塊的數(shù)量計算得到需要建立的傳輸線程的數(shù)量。在上述技術(shù)方案中,優(yōu)選地,所述線程建立單元還用于:在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個控制線程,所述控制線程將來自所述數(shù)據(jù)發(fā)送裝置的輔助參數(shù)發(fā)送至所述數(shù)據(jù)接收裝置。在該技術(shù)方案中,數(shù)據(jù)塊的傳輸是采用的傳輸線程,而在數(shù)據(jù)傳輸之前或其過程中,需要一些輔助參數(shù)進行數(shù)據(jù)傳輸?shù)妮o助作用,比如待傳輸數(shù)據(jù)的名稱、長度等,用于使數(shù)據(jù)接收裝置能夠確認接收到的數(shù)據(jù),而數(shù)據(jù)塊的數(shù)量、大小等,則用于確認需要建立的傳輸線程的數(shù)量,使得數(shù)據(jù)塊的傳輸能夠順利進行。在上述技術(shù)方案中,優(yōu)選地,所述輔助參數(shù)包括:所述待傳輸數(shù)據(jù)的名稱、長度、所述待傳輸數(shù)據(jù)塊的數(shù)量、大小和/或所述傳輸線程的數(shù)量。在上述技術(shù)方案中,優(yōu)選地,所述線程建立單元具體包括:連接建立子單元,在所述數(shù)據(jù)發(fā)送裝置和所述數(shù)據(jù)接收裝置之間建立socket連接;線程開啟子單元,在所述連接建立子單元完成所述socket連接的建立后,開啟所述控制線程和/或所述傳輸線程。在該技術(shù)方案中,可以采用socket連接來實現(xiàn)數(shù)據(jù)塊或輔助參數(shù)的傳輸,也就是傳輸線程或控制線程均可以采用socket方式進行建立,即在數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置之間實現(xiàn)socket連接后,開啟對應(yīng)的線程,從而實現(xiàn)線程的建立。根據(jù)本發(fā)明的又一方面,還提出了一種數(shù)據(jù)接收裝置,包括:數(shù)據(jù)接收單元,通過與數(shù)據(jù)發(fā)送裝置之間建立的至少一個傳輸線程,接收來自所述數(shù)據(jù)發(fā)送裝置的待傳輸數(shù)據(jù)塊,以及接收對應(yīng)于每個所述待傳輸數(shù)據(jù)塊的標(biāo)識;數(shù)據(jù)塊寫入單元,根據(jù)所述數(shù)據(jù)接收單元接收到的所述待傳輸數(shù)據(jù)塊的標(biāo)識,將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件;狀態(tài)設(shè)置單元,將完成了所述數(shù)據(jù)塊寫入單元的寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài);狀態(tài)判斷單元,檢測所有的所述待傳輸數(shù)據(jù)塊的標(biāo)識,判斷是否存在未被設(shè)置為所述完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識;狀態(tài)反饋單元,在所述狀態(tài)判斷單元的判斷結(jié)果為是的情況下,將未被設(shè)置為所述完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識及失敗信號反饋至所述數(shù)據(jù)發(fā)送裝置,由所述數(shù)據(jù)發(fā)送裝置重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊;結(jié)果確認單元,若所述狀態(tài)判斷單元的判斷結(jié)果為否,則將所述待生成文件作為傳輸結(jié)果。在該技術(shù)方案中,這里的待傳輸數(shù)據(jù)塊的標(biāo)識可以是待傳輸數(shù)據(jù)塊的ID等。通過對每個接收到的待傳輸數(shù)據(jù)塊進行記錄,可以了解是否已經(jīng)接收到全部的待傳輸數(shù)據(jù)塊,并已經(jīng)將其寫入待生成文件 ,以重新組合為最初的待傳輸數(shù)據(jù)。在具體操作時,可以通過多種方式實現(xiàn)對待傳輸數(shù)據(jù)塊的標(biāo)記、檢測等,比如在最初時,可以根據(jù)接收到的待傳輸數(shù)據(jù)塊的數(shù)量,在數(shù)據(jù)接收裝置中建立對應(yīng)數(shù)量大小的數(shù)組,并將該數(shù)組中的每個數(shù)上置為false。當(dāng)接收到某個待傳輸數(shù)據(jù)塊,并寫入待生成文件后,將對應(yīng)的待傳輸數(shù)據(jù)塊的標(biāo)識寫入到數(shù)組中,并將對應(yīng)位置的false置為true,因此,最后若檢測不到false則說明全部完成,傳輸成功,若檢測到false,則由數(shù)據(jù)發(fā)送裝置重新進行發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,直至檢測不到false。在上述技術(shù)方案中,優(yōu)選地,還包括:數(shù)據(jù)截取單元,在所述數(shù)據(jù)接收單元接收到最后一個數(shù)據(jù)塊之后,按照s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從所述最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于所述實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個所述待傳輸數(shù)據(jù)塊,其中,s為所述實際數(shù)據(jù)大小,t為所述待傳輸數(shù)據(jù)的總大小,b為所述最大傳輸單元的值,n為所述待傳輸數(shù)據(jù)的數(shù)量。在該技術(shù)方案中,由于每次進行傳輸時的待傳輸數(shù)據(jù)的大小不定,因此,在完成切割后,最后一個待傳輸數(shù)據(jù)塊的大小可能小于最大傳輸單元,但進行傳輸時,仍然是按照最大傳輸單元的大小進行傳輸,從而導(dǎo)致數(shù)據(jù)接收裝置接收到的數(shù)據(jù)中,包含有待傳輸數(shù)據(jù)以及其他的無用數(shù)據(jù),此時需要由數(shù)據(jù)接收裝置對接收到的最后一個數(shù)據(jù)進行處理,獲取其中的有用數(shù)據(jù),即最后一個待傳輸數(shù)據(jù)塊。而在接收到的數(shù)據(jù)塊中,往往是從一端開始為待傳輸數(shù)據(jù)塊,而該端口往往是固定的,因而可以通過上述公式計算出待傳輸數(shù)據(jù)塊的大小之后,按照預(yù)設(shè)的方向從接收到的數(shù)據(jù)塊中截取相應(yīng)大小的數(shù)據(jù),即為最后一個待傳輸數(shù)據(jù)塊。根據(jù)本發(fā)明的又一方面,還提出了一種終端,包括:如上述技術(shù)方案所述的數(shù)據(jù)發(fā)送裝置;和/或如上述技術(shù)方案所述的數(shù)據(jù)接收裝置。在該技術(shù)方案中,利用了最大傳輸單元(MTU,Maximum Transmission Unit),是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,那么,當(dāng)進行傳輸?shù)臄?shù)據(jù)大于這個值時,就會影響到傳輸時的速度,而當(dāng)傳輸?shù)臄?shù)據(jù)小于或等于這個值時,則可以在不影響傳輸速度的同時,最大可能地利用帶寬資源,從而提升數(shù)據(jù)的傳輸速度。但傳輸?shù)臄?shù)據(jù)往往會大于最大傳輸單元,因此,可以將最大傳輸單元作為標(biāo)準(zhǔn)大小,對大于該值的數(shù)據(jù)進行切害!],從而保證最后進行傳輸?shù)臄?shù)據(jù)或數(shù)據(jù)塊均小于或等于最大傳輸單元的值。另外,對于傳輸線程的數(shù)量,是與切割 得到的數(shù)據(jù)塊的數(shù)量相關(guān)的,這里的相關(guān)是指,可以預(yù)示設(shè)置好數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間的對應(yīng)關(guān)系,比如數(shù)據(jù)塊小于或等于20個時,建立5個線程,數(shù)據(jù)塊大于20個小于200個時,建立10個線程等,當(dāng)然,也可以在數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間建立一個關(guān)系式,然后根據(jù)每次得到的數(shù)據(jù)塊的數(shù)量計算得到需要建立的傳輸線程的數(shù)量。這里的待傳輸數(shù)據(jù)塊的標(biāo)識可以是待傳輸數(shù)據(jù)塊的ID等。通過對每個接收到的待傳輸數(shù)據(jù)塊進行記錄,可以了解是否已經(jīng)接收到全部的待傳輸數(shù)據(jù)塊,并已經(jīng)將其寫入待生成文件,以重新組合為最初的待傳輸數(shù)據(jù)。在具體操作時,可以通過多種方式實現(xiàn)對待傳輸數(shù)據(jù)塊的標(biāo)記、檢測等,比如在最初時,可以根據(jù)接收到的待傳輸數(shù)據(jù)塊的數(shù)量,在數(shù)據(jù)接收裝置中建立對應(yīng)數(shù)量大小的數(shù)組,并將該數(shù)組中的每個數(shù)上置為false。當(dāng)接收到某個待傳輸數(shù)據(jù)塊,并寫入待生成文件后,將對應(yīng)的待傳輸數(shù)據(jù)塊的標(biāo)識寫入到數(shù)組中,并將對應(yīng)位置的false置為true,因此,最后若檢測不到false則說明全部完成,傳輸成功,若檢測到false,則由數(shù)據(jù)發(fā)送裝置重新進行發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,直至檢測不到false。在上述技術(shù)方案中,優(yōu)選地,包括:所述數(shù)據(jù)發(fā)送裝置通過有線或無線方式連接至所述數(shù)據(jù)接收裝置。在該技術(shù)方案中,無論是有線的數(shù)據(jù)傳輸方式,還是藍牙、紅外等無線的數(shù)據(jù)傳輸方式,都可以應(yīng)用于本發(fā)明的技術(shù)方案。根據(jù)本發(fā)明的又一方面,還提出了一種數(shù)據(jù)傳輸方法,包括:步驟402,數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間通過有線或無線方式進行連接;步驟404,根據(jù)采用的連接方式,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于所述通信協(xié)議的最大傳輸單元;步驟406,若待傳輸數(shù)據(jù)小于或等于所述最大傳輸單元的值,將所述待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若所述待傳輸數(shù)據(jù)大于所述最大傳輸單元的值,則按照所述最大傳輸單元的值分割所述待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊;步驟408,在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,所述傳輸線程的數(shù)量對應(yīng)于所述待傳輸數(shù)據(jù)塊;步驟410,所述數(shù)據(jù)發(fā)送裝置將所述待傳輸數(shù)據(jù)塊通過所述傳輸線程傳輸至所述數(shù)據(jù)接收裝置。在該技術(shù)方案中,利用了最大傳輸單元(MTU,Maximum Transmission Unit),是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,那么,當(dāng)進行傳輸?shù)臄?shù)據(jù)大于這個值時,就會影響到傳輸時的速度,而當(dāng)傳輸?shù)臄?shù)據(jù)小于或等于這個值時,則可以在不影響傳輸速度的同時,最大可能地利用帶寬資源,從而提升數(shù)據(jù)的傳輸速度。但傳輸?shù)臄?shù)據(jù)往往會大于最大傳輸單元,因此,可以將最大傳輸單元作為標(biāo)準(zhǔn)大小,對大于該值的數(shù)據(jù)進行切害!],從而保證最后進行傳輸?shù)臄?shù)據(jù)或數(shù)據(jù)塊均小于或等于最大傳輸單元的值。另外,對于傳輸線程的數(shù)量,是與切割得到的數(shù)據(jù)塊的數(shù)量相關(guān)的,這里的相關(guān)是指,可以預(yù)示設(shè)置好數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間的對應(yīng)關(guān)系,比如數(shù)據(jù)塊小于或等于20個時,建立5個線程,數(shù)據(jù)塊大于20個小于200個時,建立10個線程等,當(dāng)然,也可以在數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間建立一個關(guān)系式,然后根據(jù)每次得到的數(shù)據(jù)塊的數(shù)量計算得到需要建立的傳輸線程的數(shù)量。在上述技術(shù)方案中,優(yōu)選地,在所述步驟408之前,還包括:在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個控制線程,用于由所述數(shù)據(jù)發(fā)送裝置將輔助參數(shù)發(fā)送至所述數(shù)據(jù)接收裝置。在該技術(shù)方案中,數(shù)據(jù)塊的傳輸是采用的傳輸線程,而在數(shù)據(jù)傳輸之前或其過程中,需要一些輔助參數(shù)進行數(shù)據(jù)傳輸?shù)妮o助作用,比如待傳輸數(shù)據(jù)的名稱、長度等,用于使數(shù)據(jù)接收裝置能夠確認接收到的數(shù)據(jù),而數(shù)據(jù)塊的數(shù)量、大小等,則用于確認需要建立的傳輸線程的數(shù)量,使得數(shù)據(jù)塊的傳輸能夠順利進行。在上述技術(shù)方案中,優(yōu)選地,所述輔助參數(shù)包括:所述待傳輸數(shù)據(jù)的名稱、長度、所述待傳輸數(shù)據(jù)塊的數(shù)量、大小和/或所述傳輸線程的數(shù)量。在上述技術(shù)方案中,優(yōu)選地,所述步驟410還包括:將每個所述待傳輸數(shù)據(jù)塊的標(biāo)識通過對應(yīng)的傳輸線程傳輸至所述數(shù)據(jù)接收裝置;在所述步驟410之后,還包括:所述數(shù)據(jù)接收裝置根據(jù)所述待傳輸數(shù)據(jù)塊的標(biāo)識將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件,并將完成了該寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài);以及若存在沒有被設(shè)置為所述完成狀態(tài)的待傳輸數(shù)據(jù)塊的·標(biāo)識,則由所述數(shù)據(jù)發(fā)送裝置重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,若不存在,則將所述待生成文件作為傳輸結(jié)果。在該技術(shù)方案中,這里的待傳輸數(shù)據(jù)塊的標(biāo)識可以是待傳輸數(shù)據(jù)塊的ID等。通過對每個接收到的待傳輸數(shù)據(jù)塊進行記錄,可以了解是否已經(jīng)接收到全部的待傳輸數(shù)據(jù)塊,并已經(jīng)將其寫入待生成文件,以重新組合為最初的待傳輸數(shù)據(jù)。在具體操作時,可以通過多種方式實現(xiàn)對待傳輸數(shù)據(jù)塊的標(biāo)記、檢測等,比如在最初時,可以根據(jù)接收到的待傳輸數(shù)據(jù)塊的數(shù)量,在數(shù)據(jù)接收裝置中建立對應(yīng)數(shù)量大小的數(shù)組,并將該數(shù)組中的每個數(shù)上置為false。當(dāng)接收到某個待傳輸數(shù)據(jù)塊,并寫入待生成文件后,將對應(yīng)的待傳輸數(shù)據(jù)塊的標(biāo)識寫入到數(shù)組中,并將對應(yīng)位置的false置為true,因此,最后若檢測不到false則說明全部完成,傳輸成功,若檢測到false,則由數(shù)據(jù)發(fā)送裝置重新進行發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,直至檢測不到false。在上述技術(shù)方案中,優(yōu)選地,所述步驟410還包括:在所述數(shù)據(jù)接收裝置接收到最后一個數(shù)據(jù)塊之后,按照s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從所述最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于所述實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個所述待傳輸數(shù)據(jù)塊,其中,s為所述實際數(shù)據(jù)大小,t為所述待傳輸數(shù)據(jù)的總大小,b為所述最大傳輸單元的值,n為所述待傳輸數(shù)據(jù)的數(shù)量。在該技術(shù)方案中,由于每次進行傳輸時的待傳輸數(shù)據(jù)的大小不定,因此,在完成切割后,最后一個待傳輸數(shù)據(jù)塊的大小可能小于最大傳輸單元,但進行傳輸時,仍然是按照最大傳輸單元的大小進行傳輸,從而導(dǎo)致數(shù)據(jù)接收裝置接收到的數(shù)據(jù)中,包含有待傳輸數(shù)據(jù)以及其他的無用數(shù)據(jù),此時需要由數(shù)據(jù)接收裝置對接收到的最后一個數(shù)據(jù)進行處理,獲取其中的有用數(shù)據(jù),即最后一個待傳輸數(shù)據(jù)塊。而在接收到的數(shù)據(jù)塊中,往往是從一端開始為待傳輸數(shù)據(jù)塊,而該端口往往是固定的,因而可以通過上述公式計算出待傳輸數(shù)據(jù)塊的大小之后,按照預(yù)設(shè)的方向從接收到的數(shù)據(jù)塊中截取相應(yīng)大小的數(shù)據(jù),即為最后一個待傳輸數(shù)據(jù)塊。在上述技術(shù)方案中,優(yōu)選地,還包括:在所述數(shù)據(jù)發(fā)送裝置和所述數(shù)據(jù)接收裝置之間建立socket連接之后,開啟所述控制線程和/或所述傳輸線程。在該技術(shù)方案中,可以采用socket連接來實現(xiàn)數(shù)據(jù)塊或輔助參數(shù)的傳輸,也就是傳輸線程或控制線程均可以采用socket方式進行建立,即在數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置之間實現(xiàn)socket連接后,開啟對應(yīng)的線程,從而實現(xiàn)線程的建立。通過以上技術(shù)方案,可以充分利用網(wǎng)絡(luò)資源,提高數(shù)據(jù)傳輸速度。
圖1示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)發(fā)送裝置的框圖;圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)接收裝置的框圖;圖3示出了根據(jù)本發(fā)明的實施例的終端的框圖;圖4示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)傳輸方法的流程圖;圖5示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)傳輸?shù)木唧w流程圖。
具體實施例方式
為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式
對本發(fā)明進行進一步的詳細描述。在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明并不限于下面公開的具體實施例的限制。圖1示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)發(fā)送裝置的框圖。如圖1所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)發(fā)送裝置100,包括:協(xié)議確認單元102,根據(jù)數(shù)據(jù)發(fā)送裝置100與數(shù)據(jù)接收裝置之間采用的連接方式,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于通信協(xié)議的最大傳輸單元;數(shù)據(jù)分割單元104,若待傳輸數(shù)據(jù)小于或等于最大傳輸單元的值,將待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若待傳輸數(shù)據(jù)大于最大傳輸單元的值,則按照最大傳輸單元的值分割待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊;線程建立單元106,在數(shù)據(jù)發(fā)送裝置100與數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,傳輸線程的數(shù)量對應(yīng)于待傳輸數(shù)據(jù)塊;數(shù)據(jù)塊發(fā)送單元108,將待傳輸數(shù)據(jù)塊通過傳輸線程傳輸至數(shù)據(jù)接收裝置。在該技術(shù)方案中,利用了最大傳輸單元(MTU,Maximum Transmission Unit),是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,那么,當(dāng)進行傳輸?shù)臄?shù)據(jù)大于這個值時,就會影響到傳輸時的速度,而當(dāng)傳輸?shù)臄?shù)據(jù)小于或等于這個值時,則可以在不影響傳輸速度的同時,最大可能地利用帶寬資源,從而提升數(shù)據(jù)的傳輸速度。但傳輸?shù)臄?shù)據(jù)往往會大于最大傳輸單元,因此,可以將最大傳輸單元作為標(biāo)準(zhǔn)大小,對大于該值的數(shù)據(jù)進行切害!],從而保證最后進行傳輸?shù)臄?shù)據(jù)或數(shù)據(jù)塊均小于或等于最大傳輸單元的值。另外,對于傳輸線程的數(shù)量,是與切割得到的數(shù)據(jù)塊的數(shù)量相關(guān)的,這里的相關(guān)是指,可以預(yù)示設(shè)置好數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間的對應(yīng)關(guān)系,比如數(shù)據(jù)塊小于或等于20個時,建立5個線程,數(shù)據(jù)塊大于20個小于200個時,建立10個線程等,當(dāng)然,也可以在數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間建立一個關(guān)系式,然后根據(jù)每次得到的數(shù)據(jù)塊的數(shù)量計算得到需要建立的傳輸線程的數(shù)量。在上述技術(shù)方案中,線程建立單元106還用于:在數(shù)據(jù)發(fā)送裝置100與數(shù)據(jù)接收裝置之間建立至少一個控制線程,控制線程將來自數(shù)據(jù)發(fā)送裝置100的輔助參數(shù)發(fā)送至數(shù)據(jù)接收裝置。在該技術(shù)方案中,數(shù)據(jù)塊的傳輸是采用的傳輸線程,而在數(shù)據(jù)傳輸之前或其過程中,需要一些輔助參數(shù)進行數(shù)據(jù)傳輸?shù)妮o助作用,比如待傳輸數(shù)據(jù)的名稱、長度等,用于使數(shù)據(jù)接收裝置能夠確認接收到的數(shù)據(jù),而數(shù)據(jù)塊的數(shù)量、大小等,則用于確認需要建立的傳輸線程的數(shù)量,使得數(shù)據(jù)塊的傳輸能夠順利進行。在上述技術(shù)方案中,輔助參數(shù)包括:待傳輸數(shù)據(jù)的名稱、長度、待傳輸數(shù)據(jù)塊的數(shù)量、大小和/或傳輸線程的數(shù)量。在上述技術(shù)方案中,線程建立單元106具體包括:連接建立子單元1062,在數(shù)據(jù)發(fā)送裝置100和數(shù)據(jù)接收裝置之間建立socket連接;線程開啟子單元1064,在連接建立子單元1062完成socket連接的建立后,開啟控制線程和/或傳輸線程。在該技術(shù)方案中,可以采用socket連接來實現(xiàn)數(shù)據(jù)塊或輔助參數(shù)的傳輸,也就是傳輸線程或控制線程均可以采用socket方式進行建立,即在數(shù)據(jù)發(fā)送裝置100和數(shù)據(jù)接收裝置之間實現(xiàn)socket連接后,開啟對應(yīng)的線程,從而實現(xiàn)線程的建立。圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)接收裝置的框圖。如圖2所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)接收裝置200,包括:數(shù)據(jù)接收單元202,通過與數(shù)據(jù)發(fā)送裝置之間建立的至少一個傳輸線程,接收來自數(shù)據(jù)發(fā)送裝置的待傳輸數(shù)據(jù)塊,以及接收對應(yīng)于每 個待傳輸數(shù)據(jù)塊的標(biāo)識;數(shù)據(jù)塊寫入單元204,根據(jù)數(shù)據(jù)接收單元202接收到的待傳輸數(shù)據(jù)塊的標(biāo)識,將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件;狀態(tài)設(shè)置單元206,將完成了數(shù)據(jù)塊寫入單元204的寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài);狀態(tài)判斷單元208,檢測所有的待傳輸數(shù)據(jù)塊的標(biāo)識,判斷是否存在未被設(shè)置為完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識;狀態(tài)反饋單元210,在狀態(tài)判斷單元208的判斷結(jié)果為是的情況下,將未被設(shè)置為完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識及失敗信號反饋至數(shù)據(jù)發(fā)送裝置,由數(shù)據(jù)發(fā)送裝置重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊;結(jié)果確認單元212,若狀態(tài)判斷單元208的判斷結(jié)果為否,則將待生成文件作為傳輸結(jié)果。在該技術(shù)方案中,這里的待傳輸數(shù)據(jù)塊的標(biāo)識可以是待傳輸數(shù)據(jù)塊的ID等。通過對每個接收到的待傳輸數(shù)據(jù)塊進行記錄,可以了解是否已經(jīng)接收到全部的待傳輸數(shù)據(jù)塊,并已經(jīng)將其寫入待生成文件,以重新組合為最初的待傳輸數(shù)據(jù)。在具體操作時,可以通過多種方式實現(xiàn)對待傳輸數(shù)據(jù)塊的標(biāo)記、檢測等,比如在最初時,可以根據(jù)接收到的待傳輸數(shù)據(jù)塊的數(shù)量,在數(shù)據(jù)接收裝置200中建立對應(yīng)數(shù)量大小的數(shù)組,并將該數(shù)組中的每個數(shù)上置為false。當(dāng)接收到某個待傳輸數(shù)據(jù)塊,并寫入待生成文件后,將對應(yīng)的待傳輸數(shù)據(jù)塊的標(biāo)識寫入到數(shù)組中,并將對應(yīng)位置的false置為true,因此,最后若檢測不到false則說明全部完成,傳輸成功,若檢測到false,則由數(shù)據(jù)發(fā)送裝置重新進行發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,直至檢測不到false。
在上述技術(shù)方案中,還包括:數(shù)據(jù)截取單元214,在數(shù)據(jù)接收單元202接收到最后一個數(shù)據(jù)塊之后,按照s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個待傳輸數(shù)據(jù)塊,其中,s為實際數(shù)據(jù)大小,t為待傳輸數(shù)據(jù)的總大小,b為最大傳輸單元的值,n為待傳輸數(shù)據(jù)的數(shù)量。在該技術(shù)方案中,由于每次進行傳輸時的待傳輸數(shù)據(jù)的大小不定,因此,在完成切割后,最后一個待傳輸數(shù)據(jù)塊的大小可能小于最大傳輸單元,但進行傳輸時,仍然是按照最大傳輸單元的大小進行傳輸,從而導(dǎo)致數(shù)據(jù)接收裝置200接收到的數(shù)據(jù)中,包含有待傳輸數(shù)據(jù)以及其他的無用數(shù)據(jù),此時需要由數(shù)據(jù)接收裝置200對接收到的最后一個數(shù)據(jù)進行處理,獲取其中的有用數(shù)據(jù),即最后一個待傳輸數(shù)據(jù)塊。而在接收到的數(shù)據(jù)塊中,往往是從一端開始至實際數(shù)據(jù)大小均為待傳輸數(shù)據(jù)塊,且開始方向是一致的,如從首先接收到的一端開始,因而可以通過上述公式計算出待傳輸數(shù)據(jù)塊的大小之后,按照預(yù)設(shè)的方向從接收到的數(shù)據(jù)塊中截取相應(yīng)大小的數(shù)據(jù),即為最后一個待傳輸數(shù)據(jù)塊。圖3示出了根據(jù)本發(fā)明的實施例的終端的框圖。如圖3所示,根據(jù)本發(fā)明的實施例的終端300,包括如圖1所示的數(shù)據(jù)發(fā)送裝置100和如圖2所示的數(shù)據(jù)接收裝置200。數(shù)據(jù)發(fā)送裝置100,包括:協(xié)議確認單元102,根據(jù)數(shù)據(jù)發(fā)送裝置100與數(shù)據(jù)接收裝置200 (顯然,從邏輯上來說,應(yīng)該是其他終端上的數(shù)據(jù)接收裝置,下文中其他位置不再標(biāo)出)之間采用的連接方式 ,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于通信協(xié)議的最大傳輸單元;數(shù)據(jù)分割單元104,若待傳輸數(shù)據(jù)小于或等于最大傳輸單元的值,將待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若待傳輸數(shù)據(jù)大于最大傳輸單元的值,則按照最大傳輸單元的值分割待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊;線程建立單元106,在數(shù)據(jù)發(fā)送裝置100與數(shù)據(jù)接收裝置200之間建立至少一個傳輸線程,傳輸線程的數(shù)量對應(yīng)于待傳輸數(shù)據(jù)塊;數(shù)據(jù)塊發(fā)送單元108,將待傳輸數(shù)據(jù)塊通過傳輸線程傳輸至數(shù)據(jù)接收裝置200。在該技術(shù)方案中,利用了最大傳輸單元(MTU,Maximum Transmission Unit),是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,那么,當(dāng)進行傳輸?shù)臄?shù)據(jù)大于這個值時,就會影響到傳輸時的速度,而當(dāng)傳輸?shù)臄?shù)據(jù)小于或等于這個值時,則可以在不影響傳輸速度的同時,最大可能地利用帶寬資源,從而提升數(shù)據(jù)的傳輸速度。但傳輸?shù)臄?shù)據(jù)往往會大于最大傳輸單元,因此,可以將最大傳輸單元作為標(biāo)準(zhǔn)大小,對大于該值的數(shù)據(jù)進行切害!],從而保證最后進行傳輸?shù)臄?shù)據(jù)或數(shù)據(jù)塊均小于或等于最大傳輸單元的值。另外,對于傳輸線程的數(shù)量,是與切割得到的數(shù)據(jù)塊的數(shù)量相關(guān)的,這里的相關(guān)是指,可以預(yù)示設(shè)置好數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間的對應(yīng)關(guān)系,比如數(shù)據(jù)塊小于或等于20個時,建立5個線程,數(shù)據(jù)塊大于20個小于200個時,建立10個線程等,當(dāng)然,也可以在數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間建立一個關(guān)系式,然后根據(jù)每次得到的數(shù)據(jù)塊的數(shù)量計算得到需要建立的傳輸線程的數(shù)量。在上述技術(shù)方案中,線程建立單元106還用于:在數(shù)據(jù)發(fā)送裝置100與數(shù)據(jù)接收裝置200之間建立至少一個控制線程,控制線程將來自數(shù)據(jù)發(fā)送裝置100的輔助參數(shù)發(fā)送至數(shù)據(jù)接收裝置200。在該技術(shù)方案中,數(shù)據(jù)塊的傳輸是采用的傳輸線程,而在數(shù)據(jù)傳輸之前或其過程中,需要一些輔助參數(shù)進行數(shù)據(jù)傳輸?shù)妮o助作用,比如待傳輸數(shù)據(jù)的名稱、長度等,用于使數(shù)據(jù)接收裝置能夠確認接收到的數(shù)據(jù),而數(shù)據(jù)塊的數(shù)量、大小等,則用于確認需要建立的傳輸線程的數(shù)量,使得數(shù)據(jù)塊的傳輸能夠順利進行。在上述技術(shù)方案中,輔助參數(shù)包括:待傳輸數(shù)據(jù)的名稱、長度、待傳輸數(shù)據(jù)塊的數(shù)量、大小和/或傳輸線程的數(shù)量。在上述技術(shù)方案中,線程建立單元106具體包括:連接建立子單元1062,在數(shù)據(jù)發(fā)送裝置100和數(shù)據(jù)接收裝置200之間建立socket連接;線程開啟子單元1064,在連接建立子單元1062完成socket連接的建立后,開啟控制線程和/或傳輸線程。在該技術(shù)方案中,可以采用socket連接來實現(xiàn)數(shù)據(jù)塊或輔助參數(shù)的傳輸,也就是傳輸線程或控制線程均可以采用socket方式進行建立,即在數(shù)據(jù)發(fā)送裝置100和數(shù)據(jù)接收裝置200之間實現(xiàn)socket連接后,開啟對應(yīng)的線程,從而實現(xiàn)線程的建立。數(shù)據(jù)接收裝置200,包括:數(shù)據(jù)接收單元202,通過與數(shù)據(jù)發(fā)送裝置100 (顯然,從邏輯上來說,應(yīng)該是其他終端上的數(shù)據(jù)發(fā)送裝置,下文中其他位置不再標(biāo)出)之間建立的至少一個傳輸線程,接收來自數(shù)據(jù)發(fā)送裝置100的待傳輸數(shù)據(jù)塊,以及接收對應(yīng)于每個待傳輸數(shù)據(jù)塊的標(biāo)識;數(shù)據(jù)塊寫入單元204,根據(jù)數(shù)據(jù)接收單元202接收到的待傳輸數(shù)據(jù)塊的標(biāo)識,將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件;狀態(tài)設(shè)置單元206,將完成了數(shù)據(jù)塊寫入單元204的寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài);狀態(tài)判斷單元208,檢測所有的待傳輸數(shù)據(jù)塊的標(biāo)識,判斷是否存在未被設(shè)置為完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識;狀態(tài)反饋單元210,在狀態(tài)判斷單元208的判斷結(jié)果為是的情況下,將未被設(shè)置為完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識及失敗信號反饋至數(shù)據(jù)發(fā)送裝置100,由數(shù)據(jù)發(fā)送裝置100重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊;結(jié)果確認單元212,若狀態(tài)判斷單元208的判斷結(jié)果為否,則將待生成文件作為傳輸結(jié)果。 在該技術(shù)方案中,這里的待傳輸數(shù)據(jù)塊的標(biāo)識可以是待傳輸數(shù)據(jù)塊的ID等。通過對每個接收到的待傳輸數(shù)據(jù)塊進行記錄,可以了解是否已經(jīng)接收到全部的待傳輸數(shù)據(jù)塊,并已經(jīng)將其寫入待生成文件,以重新組合為最初的待傳輸數(shù)據(jù)。在具體操作時,可以通過多種方式實現(xiàn)對待傳輸數(shù)據(jù)塊的標(biāo)記、檢測等,比如在最初時,可以根據(jù)接收到的待傳輸數(shù)據(jù)塊的數(shù)量,在數(shù)據(jù)接收裝置200中建立對應(yīng)數(shù)量大小的數(shù)組,并將該數(shù)組中的每個數(shù)上置為false。當(dāng)接收到某個待傳輸數(shù)據(jù)塊,并寫入待生成文件后,將對應(yīng)的待傳輸數(shù)據(jù)塊的標(biāo)識寫入到數(shù)組中,并將對應(yīng)位置的false置為true,因此,最后若檢測不到false則說明全部完成,傳輸成功,若檢測到false,則由數(shù)據(jù)發(fā)送裝置100重新進行發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,直至檢測不到false。在上述技術(shù)方案中,還包括:數(shù)據(jù)截取單元214,在數(shù)據(jù)接收單元202接收到最后一個數(shù)據(jù)塊之后,按照s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個待傳輸數(shù)據(jù)塊,其中,s為實際數(shù)據(jù)大小,t為待傳輸數(shù)據(jù)的總大小,b為最大傳輸單元的值,n為待傳輸數(shù)據(jù)的數(shù)量。在該技術(shù)方案中,由于每次進行傳輸時的待傳輸數(shù)據(jù)的大小不定,因此,在完成切割后,最后一個待傳輸數(shù)據(jù)塊的大小可能小于最大傳輸單元,但進行傳輸時,仍然是按照最大傳輸單元的大小進行傳輸,從而導(dǎo)致數(shù)據(jù)接收裝置200接收到的數(shù)據(jù)中,包含有待傳輸數(shù)據(jù)以及其他的無用數(shù)據(jù),此時需要由數(shù)據(jù)接收裝置200對接收到的最后一個數(shù)據(jù)進行處理,獲取其中的有用數(shù)據(jù),即最后一個待傳輸數(shù)據(jù)塊。而在接收到的數(shù)據(jù)塊中,往往是從一端開始至實際數(shù)據(jù)大小均為待傳輸數(shù)據(jù)塊,且開始方向是一致的,如從首先接收到的一端開始,因而可以通過上述公式計算出待傳輸數(shù)據(jù)塊的大小之后,按照預(yù)設(shè)的方向從接收到的數(shù)據(jù)塊中截取相應(yīng)大小的數(shù)據(jù),即為最后一個待傳輸數(shù)據(jù)塊。圖4示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)傳輸方法的流程圖。如圖4所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)傳輸方法,包括:步驟402,數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間通過有線或無線方式進行連接;步驟404,根據(jù)采用的連接方式,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于通信協(xié)議的最大傳輸單元;步驟406,若待傳輸數(shù)據(jù)小于或等于最大傳輸單元的值,將待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若待傳輸數(shù)據(jù)大于最大傳輸單元的值,則按照最大傳輸單元的值分割待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊;步驟408,在數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,傳輸線程的數(shù)量對應(yīng)于待傳輸數(shù)據(jù)塊;步驟410,數(shù)據(jù)發(fā)送裝置將待傳輸數(shù)據(jù)塊通過傳輸線程傳輸至數(shù)據(jù)接收裝置。在該技術(shù)方案中,利用了最大傳輸單元(MTU,Maximum Transmission Unit),是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,那么,當(dāng)進行傳輸?shù)臄?shù)據(jù)大于這個值時,就會影響到傳輸時的速度,而當(dāng)傳輸?shù)臄?shù)據(jù)小于或等于這個值時,則可以在不影響傳輸速度的同時,最大可能地利用帶寬資源,從而提升數(shù)據(jù)的傳輸速度。但傳輸?shù)臄?shù)據(jù)往往會大于最大傳輸單元,因此,可以將最大傳輸單元作為標(biāo)準(zhǔn)大小,對大于該值的數(shù)據(jù)進行切害!],從而保證最后進行傳輸?shù)臄?shù)據(jù)或數(shù)據(jù)塊均小于或等于最大傳輸單元的值。另外,對于傳輸線程的數(shù)量,是與切割得到的數(shù)據(jù)塊的數(shù)量相關(guān)的,這里的相關(guān)是指,可以預(yù)示設(shè)置好數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間的對應(yīng)關(guān)系,比如數(shù)據(jù)塊小于或等于20個時,建立5個線程,數(shù)據(jù)塊大于20個小于200個時,建立10個線程等,當(dāng)然,也可以在數(shù)據(jù)塊數(shù)量與傳輸線程數(shù)量之間建立一個關(guān)系式,然后根據(jù)每次得到的數(shù)據(jù)塊的數(shù)量計算得到需要建立的傳輸線程的數(shù)量。在上述技術(shù)方案中,在步驟408之前,還包括:在數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間建立至少一個控制線程,用于由數(shù)據(jù)發(fā)送裝置將輔助參數(shù)發(fā)送至數(shù)據(jù)接收裝置。在該技術(shù)方案中,數(shù)據(jù)塊的傳輸是采用的傳輸線程,而在數(shù)據(jù)傳輸之前或其過程中,需要一些輔助參數(shù)進行數(shù)據(jù)傳輸?shù)妮o助作用,比如待傳輸數(shù)據(jù)的名稱、長度等,用于使數(shù)據(jù)接收裝置能夠確認接收到的數(shù)據(jù),而數(shù)·據(jù)塊的數(shù)量、大小等,則用于確認需要建立的傳輸線程的數(shù)量,使得數(shù)據(jù)塊的傳輸能夠順利進行。在上述技術(shù)方案中,輔助參數(shù)包括:待傳輸數(shù)據(jù)的名稱、長度、待傳輸數(shù)據(jù)塊的數(shù)量、大小和/或傳輸線程的數(shù)量。在上述技術(shù)方案中,步驟410還包括:將每個待傳輸數(shù)據(jù)塊的標(biāo)識通過對應(yīng)的傳輸線程傳輸至數(shù)據(jù)接收裝置;在步驟410之后,還包括:數(shù)據(jù)接收裝置根據(jù)待傳輸數(shù)據(jù)塊的標(biāo)識將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件,并將完成了該寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài);以及若存在沒有被設(shè)置為完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識,則由數(shù)據(jù)發(fā)送裝置重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,若不存在,則將待生成文件作為傳輸結(jié)果。在該技術(shù)方案中,這里的待傳輸數(shù)據(jù)塊的標(biāo)識可以是待傳輸數(shù)據(jù)塊的ID等。通過對每個接收到的待傳輸數(shù)據(jù)塊進行記錄,可以了解是否已經(jīng)接收到全部的待傳輸數(shù)據(jù)塊,并已經(jīng)將其寫入待生成文件,以重新組合為最初的待傳輸數(shù)據(jù)。在具體操作時,可以通過多種方式實現(xiàn)對待傳輸數(shù)據(jù)塊的標(biāo)記、檢測等,比如在最初時,可以根據(jù)接收到的待傳輸數(shù)據(jù)塊的數(shù)量,在數(shù)據(jù)接收裝置中建立對應(yīng)數(shù)量大小的數(shù)組,并將該數(shù)組中的每個數(shù)上置為false。當(dāng)接收到某個待傳輸數(shù)據(jù)塊,并寫入待生成文件后,將對應(yīng)的待傳輸數(shù)據(jù)塊的標(biāo)識寫入到數(shù)組中,并將對應(yīng)位置的false置為true,因此,最后若檢測不到false則說明全部完成,傳輸成功,若檢測到false,則由數(shù)據(jù)發(fā)送裝置重新進行發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,直至檢測不到false。在上述技術(shù)方案中,步驟410還包括:在數(shù)據(jù)接收裝置接收到最后一個數(shù)據(jù)塊之后,按照s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個待傳輸數(shù)據(jù)塊,其中,s為實際數(shù)據(jù)大小,t為待傳輸數(shù)據(jù)的總大小,b為最大傳輸單元的值,n為待傳輸數(shù)據(jù)的數(shù)量。在該技術(shù)方案中,由于每次進行傳輸時的待傳輸數(shù)據(jù)的大小不定,因此,在完成切割后,最后一個待傳輸數(shù)據(jù)塊的大小可能小于最大傳輸單元,但進行傳輸時,仍然是按照最大傳輸單元的大小進行傳輸,從而導(dǎo)致數(shù)據(jù)接收裝置接收到的數(shù)據(jù)中,包含有待傳輸數(shù)據(jù)以及其他的無用數(shù)據(jù),此時需要由數(shù)據(jù)接收裝置對接收到的最后一個數(shù)據(jù)進行處理,獲取其中的有用數(shù)據(jù),即最后一個待傳輸數(shù)據(jù)塊。而在接收到的數(shù)據(jù)塊中,往往是從一端開始至實際數(shù)據(jù)大小均為待傳輸數(shù)據(jù)塊,且開始方向是一致的,如從首先接收到的一端開始,因而可以通過上述公式計算出待傳輸數(shù)據(jù)塊的大小之后,按照預(yù)設(shè)的方向從接收到的數(shù)據(jù)塊中截取相應(yīng)大小的數(shù)據(jù),即為最后一個待傳輸數(shù)據(jù)塊。在上述技術(shù)方案中,還包括:在數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置之間建立socket連接之后,開啟控制線程和/或傳輸線程。在該技術(shù)方案中,可以采用socket連接來實現(xiàn)數(shù)據(jù)塊或輔助參數(shù)的傳輸,也就是傳輸線程或控制線程均可以采用socket方式進行建立,即在數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置之間實現(xiàn)socket連接后,開啟對應(yīng)的線程,從而實現(xiàn)線程
的建立。圖5示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)傳輸?shù)木唧w流程圖。如圖5所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)傳輸?shù)木唧w流程如下:步驟502,在發(fā)送端,建立控制連接socket,并等待連接。這里發(fā)送端相當(dāng)于建立一個服務(wù)器。步驟504,在接收端,建立控制socket,連接服務(wù)器,也就是連接至發(fā)送端建立的控制連接socket。步驟506,在發(fā)送端,根據(jù)實際情況,設(shè)置參數(shù),這里的實際情況,包括采用的連接方式,使用的通信協(xié)議,對應(yīng)的最大傳輸單元,待傳輸數(shù)據(jù)的名稱、大小等,并產(chǎn)生對應(yīng)的參數(shù)。同時,這里還將待傳輸數(shù)據(jù)與最大傳輸單元的值進行比較,若待傳輸數(shù)據(jù)的長度小于或等于最大傳輸單元的值,則直接進行傳輸,若待傳輸數(shù)據(jù)的長度大于最大傳輸單元的值,則以最大傳輸單元為單位長度進行切割,得到多個待傳輸數(shù)據(jù)塊,那么這里的待傳輸數(shù)據(jù)塊的數(shù)量、以及對應(yīng)的應(yīng)該建立的socket連接數(shù)量也是對應(yīng)的參數(shù)。步驟508,在發(fā)送端,控制socket進行信息傳輸,統(tǒng)一雙方的參數(shù)配置。這里是指由發(fā)送端將生成的參數(shù),如上述采用的通信協(xié)議、待傳輸數(shù)據(jù)的命名、大小、待傳輸數(shù)據(jù)塊的數(shù)量、需要建立的socket連接數(shù)等參數(shù),發(fā)送至接收端,以統(tǒng)一參數(shù),便于接收端對接收到的數(shù)據(jù)塊進行檢查 、重新生成整體數(shù)據(jù)。當(dāng)然,由于各個參數(shù)的生成時間并不一致,因此各個參數(shù)的發(fā)送時間并不是一致的,存在先后順序,而且也不一定按照本流程采用的流程順序,這一點對于本領(lǐng)域的技術(shù)人員是顯而易見的。
步驟510,在接收端,接收參數(shù)信息,得到文件長度、數(shù)據(jù)塊大小、socket數(shù)量等。根據(jù)上一段的說明,這些參數(shù)并不是同時、一起獲得的,而是存在一定的先后,也不一定按照本流程采用的流程順序。步驟512,在發(fā)送端,根據(jù)上述步驟生成的參數(shù),開啟多個線程,并建立socket服務(wù)器,等待連接,這里的線程與之前建立的線程不同,是用于傳輸那些待傳輸數(shù)據(jù)塊等的通道,且建立的數(shù)量是由生成的待傳輸數(shù)據(jù)塊的數(shù)量決定的,比如預(yù)先設(shè)定待傳輸數(shù)據(jù)塊的數(shù)量小于或等于20個時,建立5個線程,若大于20個且小于200個時,建立10個線程等等,可以事先建立類似的規(guī)則,當(dāng)然,也可以采用預(yù)設(shè)一個計算公式,然后根據(jù)生成的待傳輸數(shù)據(jù)塊的數(shù)量進行實時計算,得到應(yīng)該建立的線程數(shù)量。步驟514,在接收端,根據(jù)參數(shù),開啟多個線程,并建立socket客戶端,連接服務(wù)器。步驟516,在接收端,連接建立成功后,為每一個socket建立數(shù)據(jù)緩存區(qū),這里的緩存區(qū)用于存儲每個線程接收到的待傳輸數(shù)據(jù)塊。步驟518,在發(fā)送端,由多個socket發(fā)送數(shù)據(jù)。由于每個待傳輸數(shù)據(jù)塊的大小為最大傳輸單元,是單個線程的傳輸速度不受到限制的情況下能夠傳輸?shù)淖畲箝L度的數(shù)據(jù),并且采用多線程傳輸,使得對網(wǎng)絡(luò)帶寬的充分利用,提升整體數(shù)據(jù)的傳輸速度。步驟520,在接收端,接收數(shù)據(jù),即接收來自發(fā)送端的待傳輸數(shù)據(jù),并存儲在各個線程對應(yīng)的數(shù)據(jù)緩存區(qū)中。
步驟522,在發(fā)送端,判斷是否發(fā)送完成所有的待傳輸數(shù)據(jù),若是,則進入步驟524,否則返回步驟518,繼續(xù)進行發(fā)送。步驟524,在發(fā)送端,向接收端發(fā)送finishSend消息,以告知接收端,所有的待傳輸數(shù)據(jù)塊均已發(fā)送完畢。步驟526,在接收端,判斷接收到的數(shù)據(jù)是否為最后一個數(shù)據(jù)塊,這一點可以根據(jù)是否接收到來自發(fā)送端的finishSend消息來進行判斷,若是,則進入步驟528,否則進入步驟 530。步驟528,在接收端,得到最后一個數(shù)據(jù)塊中的數(shù)據(jù),這里采用s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個待傳輸數(shù)據(jù)塊,其中,s為實際數(shù)據(jù)大小,t為待傳輸數(shù)據(jù)的總大小,b為最大傳輸單元的值,n為待傳輸數(shù)據(jù)的數(shù)量。這里由于最后一個數(shù)據(jù)塊的大小無法確定,隨著整個數(shù)據(jù)的大小變化,其他數(shù)據(jù)塊的大小一定等于最大傳輸單元的值,但最后一個數(shù)據(jù)塊可能小于最大傳輸單元的值,但傳輸時仍然按照最大傳輸單元進行傳輸,比如最大傳輸單元為1000字節(jié),而最后一個待傳輸數(shù)據(jù)塊小于1000字節(jié),那么在接收端接收到的1000字節(jié)的數(shù)據(jù)中,只有一部分是真正的待傳輸數(shù)據(jù)塊,而另外的字節(jié)則是沒用的,此時需要計算出真正的待傳輸數(shù)據(jù)塊的大小,比如計算為300字節(jié),那么其他的700字節(jié)為沒用數(shù)據(jù),則按照預(yù)設(shè)的規(guī)則,比如從接收到的數(shù)據(jù)的起始點開始,截取300字節(jié)的數(shù)據(jù),即為實際需要的最后一個待傳輸數(shù)據(jù)塊。步驟530,在接收端,根據(jù)ID將接收到的數(shù)據(jù)塊寫入待生成文件的相應(yīng)位置。每個數(shù)據(jù)塊都有其對應(yīng)的ID,根據(jù)ID即可了解到數(shù)據(jù)塊在原來數(shù)據(jù)中應(yīng)該處的位置,并在接收端重新生成新的數(shù)據(jù)時,將該數(shù)據(jù)塊重新寫入對應(yīng)的位置,從而完成對整個數(shù)據(jù)的重組。
步驟532,在接收端,判斷是否存在發(fā)送失敗的數(shù)據(jù)塊,若存在,則進入步驟534,否則進入步驟538。這里進行判斷的方式,比如可以對每個接收到的數(shù)據(jù)塊的ID進行記錄,并在該數(shù)據(jù)塊被寫入待生成文件的對應(yīng)位置后,將對應(yīng)的ID置為true,那么,通過查找沒有被置為true的ID,便可以了解是否存在發(fā)送失敗的數(shù)據(jù)塊。另外,還可以在接收端,根據(jù)步驟510中接收到的數(shù)據(jù)塊的數(shù)量,建立對應(yīng)大小的一個數(shù)組,并將該數(shù)組中的各位均置為false。在接收到數(shù)據(jù)塊并寫入待生成文件的對應(yīng)位置后,將對應(yīng)的ID寫入數(shù)組中,并將數(shù)組中對應(yīng)的位置置為true,那么,最后通過查看false狀態(tài),即可了解到發(fā)送失敗的數(shù)據(jù)塊。步驟534,在發(fā)送端,若存在發(fā)送失敗項,在將其重新發(fā)送,這里可以由接收端將未成功接收到的數(shù)據(jù)塊的ID及失敗信息一同發(fā)送至發(fā)送端,便于發(fā)送端進行辨識。步驟536,在接收端,重新接收失敗項,并根據(jù)ID寫入待生成文件中相應(yīng)的位置。當(dāng)然,此時還可以再次返回步驟532進行反復(fù)檢查,直至接收到所有的數(shù)據(jù)塊,并生成了整個數(shù)據(jù)文件。(圖中未示出)步驟538,關(guān)閉socket連接,釋放資源。在上述流程中,發(fā)送端和接收端包括手機、電腦、掌上電腦等各種終端,其中,發(fā)送端和接收端可以為相同的終端,也可以為不同的終端,且發(fā)送端與接收端之間采用有線或無線方式進行連接,如藍牙、紅外等。以上結(jié)合附圖詳細說明了本發(fā)明的技術(shù)方案,考慮到相關(guān)技術(shù)中,采用單socket單線程進行數(shù)據(jù)傳輸,使得傳輸過程緩慢,因此,本發(fā)明提供了一種數(shù)據(jù)發(fā)送裝置、一種數(shù)據(jù)接收裝置、一種終端和一種數(shù)據(jù)傳輸方法,可以充分利用網(wǎng)絡(luò)資源,提高數(shù)據(jù)傳輸速度。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng) 包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)發(fā)送裝置,其特征在于,包括: 協(xié)議確認單元,根據(jù)所述數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間采用的連接方式,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于所述通信協(xié)議的最大傳輸單元; 數(shù)據(jù)分割單元,若待傳輸數(shù)據(jù)小于或等于所述最大傳輸單元的值,將所述待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若所述待傳輸數(shù)據(jù)大于所述最大傳輸單元的值,則按照所述最大傳輸單元的值分割所述待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊; 線程建立單元,在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,所述傳輸線程的數(shù)量對應(yīng)于所述待傳輸數(shù)據(jù)塊; 數(shù)據(jù)塊發(fā)送單元,將所述待傳輸數(shù)據(jù)塊通過所述傳輸線程傳輸至所述數(shù)據(jù)接收裝置。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)發(fā)送裝置,其特征在于,所述線程建立單元還用于: 在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個控制線程,所述控制線程將來自所述數(shù)據(jù)發(fā)送裝置的輔助參數(shù)發(fā)送至所述數(shù)據(jù)接收裝置。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)發(fā)送裝置,其特征在于,所述線程建立單元具體包括: 連接建立子單元,在所述數(shù)據(jù)發(fā)送裝置和所述數(shù)據(jù)接收裝置之間建立socket連接; 線程開啟子單元,在所述連接建立子單元完成所述socket連接的建立后,開啟所述控制線程和/或所述傳輸線程。
4.一種數(shù)據(jù)接收裝置, 其特征在于,包括: 數(shù)據(jù)接收單元,通過與數(shù)據(jù)發(fā)送裝置之間建立的至少一個傳輸線程,接收來自所述數(shù)據(jù)發(fā)送裝置的待傳輸數(shù)據(jù)塊,以及接收對應(yīng)于每個所述待傳輸數(shù)據(jù)塊的標(biāo)識; 數(shù)據(jù)塊寫入單元,根據(jù)所述數(shù)據(jù)接收單元接收到的所述待傳輸數(shù)據(jù)塊的標(biāo)識,將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件; 狀態(tài)設(shè)置單元,將完成了所述數(shù)據(jù)塊寫入單元的寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài); 狀態(tài)判斷單元,檢測所有的所述待傳輸數(shù)據(jù)塊的標(biāo)識,判斷是否存在未被設(shè)置為所述完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識; 狀態(tài)反饋單元,在所述狀態(tài)判斷單元的判斷結(jié)果為是的情況下,將未被設(shè)置為所述完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識及失敗信號反饋至所述數(shù)據(jù)發(fā)送裝置,由所述數(shù)據(jù)發(fā)送裝置重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊; 結(jié)果確認單元,若所述狀態(tài)判斷單元的判斷結(jié)果為否,則將所述待生成文件作為傳輸結(jié)果。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)接收裝置,其特征在于,還包括: 數(shù)據(jù)截取單元,在所述數(shù)據(jù)接收單元接收到最后一個數(shù)據(jù)塊之后,按照S =t-bX (n-1)計算實際數(shù)據(jù)大小,并從所述最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于所述實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個所述待傳輸數(shù)據(jù)塊,其中,s為所述實際數(shù)據(jù)大小,t為所述待傳輸數(shù)據(jù)的總大小,b為所述最大傳輸單元的值,n為所述待傳輸數(shù)據(jù)的數(shù)量。
6.一種終端,其特征在于,包括: 如權(quán)利要求1至3中任一項所述的數(shù)據(jù)發(fā)送裝置;和/或 如權(quán)利要求4或5所述的數(shù)據(jù)接收裝置。
7.一種數(shù)據(jù)傳輸方法,其特征在于,包括: 步驟402,數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間通過有線或無線方式進行連接; 步驟404,根據(jù)采用的連接方式,確認對應(yīng)的通信協(xié)議,并獲取對應(yīng)于所述通信協(xié)議的最大傳輸單元; 步驟406,若待傳輸數(shù)據(jù)小于或等于所述最大傳輸單元的值,將所述待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若所述待傳輸數(shù)據(jù)大于所述最大傳輸單元的值,則按照所述最大傳輸單元的值分割所述待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊; 步驟408,在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,所述傳輸線程的數(shù)量對應(yīng)于所述待傳輸數(shù)據(jù)塊; 步驟410,所述數(shù)據(jù)發(fā)送裝置將所述待傳輸數(shù)據(jù)塊通過所述傳輸線程傳輸至所述數(shù)據(jù)接收裝置。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)傳輸方法,其特征在于,在所述步驟408之前,還包括: 在所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置之間建立至少一個控制線程,用于由所述數(shù)據(jù)發(fā)送裝置將輔助參數(shù)發(fā)送至所述數(shù)據(jù)接收裝置。
9.根據(jù)權(quán)利 要求7或8所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟410還包括: 將每個所述待傳輸數(shù)據(jù)塊的標(biāo)識通過對應(yīng)的傳輸線程傳輸至所述數(shù)據(jù)接收裝置; 在所述步驟410之后,還包括: 所述數(shù)據(jù)接收裝置根據(jù)所述待傳輸數(shù)據(jù)塊的標(biāo)識將對應(yīng)的待傳輸數(shù)據(jù)塊寫入待生成文件,并將完成了該寫入過程的待傳輸數(shù)據(jù)塊的標(biāo)識設(shè)置為完成狀態(tài);以及 若存在沒有被設(shè)置為所述完成狀態(tài)的待傳輸數(shù)據(jù)塊的標(biāo)識,則由所述數(shù)據(jù)發(fā)送裝置重新發(fā)送對應(yīng)的待傳輸數(shù)據(jù)塊,若不存在,則將所述待生成文件作為傳輸結(jié)果。
10.根據(jù)權(quán)利要求7或8所述的數(shù)據(jù)傳輸方法,其特征在于,所述步驟410還包括: 在所述數(shù)據(jù)接收裝置接收到最后一個數(shù)據(jù)塊之后,按照s = t-bX (n-1)計算實際數(shù)據(jù)大小,并從所述最后一個數(shù)據(jù)塊中按照預(yù)設(shè)路徑截取對應(yīng)于所述實際數(shù)據(jù)大小的數(shù)據(jù)塊,作為最后一個所述待傳輸數(shù)據(jù)塊,其中,s為所述實際數(shù)據(jù)大小,t為所述待傳輸數(shù)據(jù)的總大小,b為所述最大傳輸單元的值,n為所述待傳輸數(shù)據(jù)的數(shù)量。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)發(fā)送裝置,包括協(xié)議確認單元,根據(jù)采用的連接方式,確認對應(yīng)的通信協(xié)議及對應(yīng)的最大傳輸單元;數(shù)據(jù)分割單元,若待傳輸數(shù)據(jù)小于或等于最大傳輸單元的值,將待傳輸數(shù)據(jù)作為待傳輸數(shù)據(jù)塊,若待傳輸數(shù)據(jù)大于最大傳輸單元的值,則按照最大傳輸單元的值分割待傳輸數(shù)據(jù),得到多個待傳輸數(shù)據(jù)塊;線程建立單元,在數(shù)據(jù)發(fā)送裝置與數(shù)據(jù)接收裝置之間建立至少一個傳輸線程,傳輸線程的數(shù)量對應(yīng)于待傳輸數(shù)據(jù)塊;數(shù)據(jù)塊發(fā)送單元,將待傳輸數(shù)據(jù)塊通過傳輸線程傳輸至數(shù)據(jù)接收裝置。相應(yīng)地,本發(fā)明還提出了一種數(shù)據(jù)接收裝置、一種終端和一種數(shù)據(jù)傳輸方法。通過本發(fā)明的技術(shù)方案,可以充分利用網(wǎng)絡(luò)資源,提高數(shù)據(jù)傳輸速度。
文檔編號H04L1/00GK103248452SQ201210029720
公開日2013年8月14日 申請日期2012年2月10日 優(yōu)先權(quán)日2012年2月10日
發(fā)明者沈旭 申請人:宇龍計算機通信科技(深圳)有限公司