一種文件傳輸方法及裝置制造方法【專利摘要】本發(fā)明涉及一種文件傳輸方法,包括:獲取文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率;根據(jù)該傳輸參數(shù)計(jì)算速率變化指數(shù);判斷該速率變化指數(shù)是否小于第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài);獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積;按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制M(jìn)行傳輸。本發(fā)明還提供一種文件傳輸裝置。利用本發(fā)明可以使分片大小適應(yīng)網(wǎng)絡(luò)質(zhì)量和帶寬的要求,從而提升網(wǎng)絡(luò)在傳輸文件時的有效帶寬和文件的傳輸速度?!緦@f明】一種文件傳輸方法及裝置【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及互聯(lián)網(wǎng)【
技術(shù)領(lǐng)域:
】,特別涉及一種文件傳輸方法及裝置。【
背景技術(shù):
】[0002]目前,在互聯(lián)網(wǎng)下進(jìn)行文件傳輸時,對被傳輸文件的處理基本上都是將文件等分成若干個分片按順序進(jìn)行傳輸,或者不分片而直接將整個文件放在一個數(shù)據(jù)包里進(jìn)行傳輸。若采用不分片的方式傳輸文件,在文件較大時,文件傳輸?shù)氖÷蕰龈?,所帶來的傳輸代價(jià)及重傳代價(jià)也都會增大。而經(jīng)大量測試發(fā)現(xiàn),在不同質(zhì)量和帶寬的網(wǎng)絡(luò)下,文件分片的大小只有達(dá)到某一個值時,傳輸速率才能達(dá)到該網(wǎng)絡(luò)下的最大值。因此,采用固定大小的分片進(jìn)行傳輸時,如果網(wǎng)絡(luò)質(zhì)量很好,而分片的大小相對較小時,就可能會限制傳輸速率。尤其是在網(wǎng)絡(luò)帶寬和質(zhì)量經(jīng)常變化的移動互聯(lián)網(wǎng)中,若分片的大小不合適,就會使得網(wǎng)絡(luò)不能發(fā)揮最大的傳輸能力,無法提升文件的傳輸速度?!?br/>發(fā)明內(nèi)容】[0003]有鑒于此,有必要提供一種文件傳輸方法及裝置,可以使文件的當(dāng)前待傳輸分片的大小適應(yīng)網(wǎng)絡(luò)質(zhì)量和帶寬的要求,從而提升網(wǎng)絡(luò)在傳輸文件時的有效帶寬和文件的傳輸速度。[0004]一種文件傳輸方法,該方法包括:獲取步驟:獲取待傳輸至接收端的文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率;計(jì)算步驟:根據(jù)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)計(jì)算速率變化指數(shù),該速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率;第一判斷步驟:判斷該速率變化指數(shù)是否小于預(yù)設(shè)的第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài);第一設(shè)定步驟:獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積;及截取步驟:按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制M(jìn)行傳輸。[0005]一種文件傳輸裝置,包括:獲取模塊,用于獲取待傳輸至接收端的文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率;計(jì)算模塊,用于根據(jù)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)計(jì)算速率變化指數(shù),該速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率;第一判斷模塊,用于判斷該速率變化指數(shù)是否小于預(yù)設(shè)的第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài);第一設(shè)定模塊,用于獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積;及截取模塊,用于按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中獲取當(dāng)前待傳輸?shù)姆制M(jìn)行傳輸。[0006]相對于現(xiàn)有技術(shù),本發(fā)明可以根據(jù)文件中已完成傳輸?shù)姆制膫鬏攨?shù)動態(tài)地設(shè)定文件當(dāng)前待傳輸分片的大小,使該當(dāng)前待傳輸分片的大小能夠適應(yīng)網(wǎng)絡(luò)質(zhì)量和帶寬的要求,從而提升網(wǎng)絡(luò)在傳輸文件時的有效帶寬和文件的傳輸速度。[0007]為讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附圖式,作詳細(xì)說明如下。【專利附圖】【附圖說明】[0008]圖1為本發(fā)明第一實(shí)施例提供的文件傳輸方法執(zhí)行時的環(huán)境示意圖。[0009]圖2為本發(fā)明第一實(shí)施例提供的文件傳輸方法的流程圖。[0010]圖3為本發(fā)明第二實(shí)施例提供的文件傳輸方法的流程圖。[0011]圖4為圖3中檢查文件是否已傳輸完成的方法的流程圖。[0012]圖5為本發(fā)明第三實(shí)施例提供的文件傳輸方法的流程圖。[0013]圖6為本發(fā)明第四實(shí)施例提供的文件傳輸方法的流程圖。[0014]圖7為本發(fā)明第五實(shí)施例提供的文件傳輸方法的流程圖。[0015]圖8為本發(fā)明第六實(shí)施例提供的文件傳輸方法的流程圖。[0016]圖9為本發(fā)明第七實(shí)施例提供的文件傳輸方法的流程圖。[0017]圖10為本發(fā)明第八實(shí)施例提供的文件傳輸裝置的框圖。[0018]圖11為本發(fā)明第九實(shí)施例提供的文件傳輸裝置的框圖。[0019]圖12為本發(fā)明第十實(shí)施例提供的文件傳輸裝置的框圖。[0020]圖13為本發(fā)明第十一實(shí)施例提供的文件傳輸裝置的框圖。[0021]圖14為本發(fā)明第十二實(shí)施例提供的文件傳輸裝置的框圖。[0022]圖15為本發(fā)明第十三實(shí)施例提供的文件傳輸裝置的框圖?!揪唧w實(shí)施方式】[0023]為更進(jìn)一步闡述本發(fā)明為實(shí)現(xiàn)預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對依據(jù)本發(fā)明的【具體實(shí)施方式】、結(jié)構(gòu)、特征及其功效,詳細(xì)說明如后。[0024]第一實(shí)施例[0025]本發(fā)明第一實(shí)施例提供一種文件傳輸方法,其可由一發(fā)送端執(zhí)行,用于將文件發(fā)送至一個接收端中。上述的發(fā)送端與接收端例如是計(jì)算機(jī)、移動電子終端或者其他類似的運(yùn)算裝置。參閱圖1所示,其為上述的文件傳輸方法執(zhí)行時的環(huán)境示意圖。發(fā)送端110通過網(wǎng)絡(luò)10與接收端120相連。該網(wǎng)絡(luò)10可為任意的網(wǎng)絡(luò)連接方式,例如互聯(lián)網(wǎng)(Internet)、移動互聯(lián)網(wǎng)(如電信運(yùn)營商提供的2G、3G網(wǎng)絡(luò))、局域網(wǎng)(有線或者無線)等。[0026]以下結(jié)合具體的實(shí)施例對上述的文件傳輸方法詳細(xì)描述如下:[0027]圖2為第一實(shí)施例提供的文件傳輸方法的流程圖,該文件傳輸方法包括以下步驟:[0028]步驟S101,從待傳輸至接收端120的文件中提取一個分片;[0029]步驟S102,將該分片提交至待傳輸隊(duì)列,并監(jiān)控該分片是否傳輸成功;[0030]步驟S103,若該分片未傳輸成功,則判斷該分片的重傳次數(shù)是否達(dá)到預(yù)設(shè)的次數(shù)閾值;[0031]步驟S104,若該分片的重傳次數(shù)未達(dá)到該次數(shù)閾值,則在等待一段預(yù)設(shè)時間后重新執(zhí)行所述步驟S102,并更新該分片的重傳次數(shù)。[0032]按照上述的文件傳輸方法,在文件的單個分片傳輸失敗后,將等待一段時間再重傳該分片,相比于傳統(tǒng)的一旦傳輸失敗就立刻重傳分片的方式,該方法能夠提高文件的單個分片的傳輸成功率,進(jìn)而提升該文件的傳輸成功率。[0033]在一些實(shí)例中,上述方法的各步驟的實(shí)現(xiàn)細(xì)節(jié)如下:[0034]步驟SlOl所述的文件可以是圖片、文檔、視頻等。在本實(shí)施例中,可以按照固定的分片大小從該文件中提取分片。若為首次傳輸該文件,則以該文件的首字節(jié)為首個分片的起點(diǎn)提取該首個分片,當(dāng)該首個分片成功傳輸?shù)皆摻邮斩?20后,再根據(jù)該固定的分片大小設(shè)置下個分片的起點(diǎn),依此類推。若為失敗后重新傳輸該文件,則依然以該文件的首字節(jié)為首個分片的起點(diǎn)提取該首個分片。當(dāng)該首個分片成功傳輸?shù)皆摻邮斩?20后,接收該接收端120返回的已成功接收的該文件的字節(jié)數(shù),再將接收端120返回的該字節(jié)數(shù)設(shè)為下個分片的起點(diǎn),以實(shí)現(xiàn)接在已成功傳輸?shù)姆制罄^續(xù)傳輸該文件,即“斷點(diǎn)續(xù)傳”。[0035]步驟S102中,該發(fā)送端110和該接收端120可以是基于傳輸控制協(xié)議(Transmiss1nControlProtocol,TCP)連接的。相應(yīng)的,所述的待傳輸隊(duì)列可以是TCP的輸出緩沖區(qū)。位于該輸出緩沖區(qū)內(nèi)的分片會交由操作系統(tǒng)完成物理層的發(fā)送。具體的物理層發(fā)送過程由操作系統(tǒng)進(jìn)行控制,在此不再贅述。[0036]在本實(shí)施例中,還可以先對該分片和該文件進(jìn)行加密處理,例如使用MD5(Message-DigestAlgorithm5,消息摘要算法第五版)加密算法處理,然后將該分片及其加密值與該文件的加密值封裝成一個數(shù)據(jù)包提交至該待傳輸隊(duì)列,以確保該分片和文件在傳輸過程中的完整性。[0037]監(jiān)控該分片是否傳輸成功可以采用設(shè)定未收到回復(fù)信息的超時時間的方法。在所設(shè)定的超時時間內(nèi),若未收到該接收端120返回的回復(fù)信息,則判斷該分片傳輸失敗。若在所設(shè)定的超時時間內(nèi)收到該接收端120返回的回復(fù)信息,則根據(jù)該回復(fù)信息判斷該分片是否傳輸成功。[0038]步驟S103所述的重傳次數(shù)為該分片每次傳輸失敗后被再次提交至該待傳輸隊(duì)列進(jìn)行傳輸?shù)拇螖?shù)。當(dāng)一個分片首次被傳輸時,將該分片的重傳次數(shù)初始化為零,之后每當(dāng)該分片傳輸失敗后再次進(jìn)行傳輸時,將累計(jì)該分片的重傳次數(shù)。若該分片的重傳次數(shù)達(dá)到該次數(shù)閾值,則判斷該文件傳輸失敗,可以結(jié)束傳輸或重新傳輸該文件。[0039]步驟S104所述的預(yù)設(shè)時間將隨著該分片的重傳次數(shù)的增加而延長。延長該預(yù)設(shè)時間可以采用指數(shù)回退的方法,例如先設(shè)置一個基準(zhǔn)時間Ti,假設(shè)該分片的重傳次數(shù)為C,而該預(yù)設(shè)時間為T0,則該TO的計(jì)算公式可以是:T0=Ti*2~(C-1)。在該分片首次傳輸失敗后等待該基準(zhǔn)時間Ti后再重傳,如果這次重傳后再傳輸失敗,則再等待比該基準(zhǔn)時間Ti多一倍的時間后再重傳該分片,依此類推。由于在網(wǎng)絡(luò)質(zhì)量較差的互聯(lián)網(wǎng)下從故障狀態(tài)恢復(fù)到正常狀態(tài)需要花費(fèi)較多的時間,經(jīng)過預(yù)設(shè)時間的等待后再重傳該分片,可以使該分片的傳輸成功率相較于傳輸失敗后立刻重傳該分片更高。[0040]第二實(shí)施例[0041]為了實(shí)現(xiàn)文件的完整傳輸,參閱圖3所示,第二實(shí)施例提供一種文件傳輸方法,其相比于第一實(shí)施例的文件傳輸方法,在所述步驟S102后進(jìn)一步包括:[0042]步驟S105,若該分片傳輸成功,則檢查該文件是否已傳輸完成,若該文件未傳輸完成,則返回步驟S101,若該文件已傳輸完成,則判定該文件傳輸成功。具體而言,參閱圖4所示,所述檢查該文件是否已傳輸完成的步驟包括:[0043]步驟S105.1,接收該接收端120返回的回復(fù)信息,該回復(fù)信息包括該接收端120已接收該文件所有分片大小的總和。[0044]步驟S105.2,判斷該接收端120已接收該文件所有分片大小的總和與該文件的大小是否相等,若是,則判定該文件已傳輸完成,若否,則判定該文件未傳輸完成。[0045]經(jīng)過上述流程,可以確定該文件是否傳輸完成,若該文件未傳輸完成,則繼續(xù)從該文件中提取下一個分片進(jìn)行傳輸,直至文件傳輸完成。[0046]第三實(shí)施例[0047]根據(jù)第一實(shí)施例提供的文件傳輸方法在互聯(lián)網(wǎng)上傳輸文件,是按照固定的分片大小從該文件中提取分片依次進(jìn)行傳輸。然而在不同質(zhì)量和帶寬的網(wǎng)絡(luò)下,文件分片的大小只有達(dá)到某一個值時,傳輸速率才能達(dá)到該網(wǎng)絡(luò)下的最大值。因此,采用固定大小的分片進(jìn)行傳輸時,如果網(wǎng)絡(luò)質(zhì)量很好,而分片的大小相對較小時,就可能會限制傳輸速率。尤其是在網(wǎng)絡(luò)帶寬和質(zhì)量經(jīng)常變化的移動互聯(lián)網(wǎng)中,若分片的大小不合適,就會使得網(wǎng)絡(luò)不能發(fā)揮最大的傳輸能力,無法提升文件的傳輸速度。[0048]為進(jìn)一步解決上述問題,參閱圖5所示,本發(fā)明第三實(shí)施例提供一種文件傳輸方法,其相比于第一實(shí)施例的文件傳輸方法,所述的步驟SlOl進(jìn)一步包括:[0049]步驟S201,獲取該文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率;[0050]步驟S202,根據(jù)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)計(jì)算速率變化指數(shù),該速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率;[0051]步驟S203,判斷該速率變化指數(shù)是否小于預(yù)設(shè)的第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài);[0052]步驟S204,獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積;[0053]步驟S205,按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制M(jìn)行傳輸。[0054]按照上述的文件傳輸方法,根據(jù)文件中已完成傳輸?shù)姆制膫鬏攨?shù)動態(tài)地設(shè)定文件當(dāng)前待傳輸分片的大小,可以使該當(dāng)前待傳輸分片的大小能夠適應(yīng)網(wǎng)絡(luò)質(zhì)量和帶寬的要求,從而提升網(wǎng)絡(luò)在傳輸文件時的有效帶寬和文件的傳輸速度。[0055]在一些實(shí)例中,上述方法的各步驟的實(shí)現(xiàn)細(xì)節(jié)如下:[0056]步驟S201所述的傳輸速率可以根據(jù)每個已經(jīng)完成傳輸?shù)姆制拇笮『蛡鬏敃r間計(jì)算得出。該傳輸時間是指相應(yīng)分片從發(fā)送出去到接收到該接收端120回復(fù)的表示接收成功的信息之間的時間段。計(jì)算出該傳輸速率后,還可以對該傳輸速率使用預(yù)先設(shè)定的平滑因子進(jìn)行平滑處理。[0057]步驟S202所述的速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率,即在該至少一個已經(jīng)完成傳輸?shù)姆制?,?dāng)分片大小變化時,分片的傳輸速率相應(yīng)的變化情況。當(dāng)分片大小以一定的增長速度增長時,該傳輸速率也有相應(yīng)的提升,則說明此時分片大小的增長速度能滿足該傳輸速率提升的要求。而當(dāng)分片大小以該增長速度增長時,該傳輸速率沒有相應(yīng)的提升,則說明此時分片大小的增長速度已不能滿足傳輸速率提升的要求,需要放慢分片大小的增長速度或保持分片大小不變。[0058]步驟S203所述的第一閾值用于界定分片大小的增長速度是否能夠滿足傳輸速率提升的要求。所述的當(dāng)前傳輸狀態(tài)即表示該分片大小的增長速度。在本實(shí)施例中,該當(dāng)前傳輸狀態(tài)包括第一狀態(tài)、第二狀態(tài)和第三狀態(tài)。每個狀態(tài)對應(yīng)一個用于表示分片大小的增長速度的系數(shù)。其中,該第一狀態(tài)和第二狀態(tài)對應(yīng)的系數(shù)大于1,并且第一狀態(tài)對應(yīng)的系數(shù)大于第二狀態(tài)對應(yīng)的系數(shù),表示第一狀態(tài)下分片大小的增長速度要高于第二狀態(tài)下分片大小的增長速度。該第三狀態(tài)對應(yīng)的系數(shù)為1,表示第三狀態(tài)下分片大小保持不變。[0059]具體而言,步驟S203還包括確定當(dāng)前傳輸狀態(tài),若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第一狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第二狀態(tài),即放慢該分片大小的增長速度。若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第二狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第三狀態(tài),即進(jìn)一步放慢該分片大小的增長速度。[0060]步驟S204獲取與更新后的該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積。若該當(dāng)前傳輸狀態(tài)為第一狀態(tài)或第二狀態(tài),則在該最近完成傳輸?shù)姆制笮〉幕A(chǔ)上相應(yīng)增大以設(shè)定待傳輸分片的大小。若該當(dāng)前傳輸狀態(tài)為第三狀態(tài),則設(shè)定待傳輸分片的大小與該最近完成傳輸?shù)姆制笮∠嗤?。[0061]步驟S205按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制?,再?zhí)行所述步驟S102以傳輸該分片。[0062]第四實(shí)施例[0063]參閱圖6所不,本發(fā)明第四實(shí)施例提供一種文件傳輸方法,相比于第三實(shí)施例的文件傳輸方法,對該當(dāng)前傳輸狀態(tài)的更新條件作出了進(jìn)一步限定,以使所設(shè)定的待傳輸分片的大小更加適應(yīng)網(wǎng)絡(luò)的傳輸能力,從而提升文件的傳輸速度。[0064]相比于第三實(shí)施例的文件傳輸方法,本實(shí)施例的文件傳輸方法進(jìn)一步包括:[0065]步驟S200,在執(zhí)行所述步驟S201前,判斷當(dāng)前待傳輸?shù)姆制欠駷樵撐募氖讉€分片,若當(dāng)前待傳輸?shù)姆制瑸樵撐募氖讉€分片,則執(zhí)行步驟S206,若當(dāng)前待傳輸?shù)姆制粸樵撐募氖讉€分片,則執(zhí)行所述步驟S201。[0066]步驟S206,設(shè)定當(dāng)前待傳輸分片的大小為當(dāng)前網(wǎng)絡(luò)類型(例如電信運(yùn)營商提供的2G/3G網(wǎng)絡(luò)、WIFI網(wǎng)絡(luò)等)下分片大小的默認(rèn)值,并將該當(dāng)前傳輸狀態(tài)更新為該第一狀態(tài),然后執(zhí)行步驟S205。[0067]步驟S207,在執(zhí)行所述步驟S203之前,確定該當(dāng)前傳輸狀態(tài)是否為該第一狀態(tài)或第二狀態(tài)。若當(dāng)前狀態(tài)為第一狀態(tài)或第二狀態(tài),則執(zhí)行步驟S208。若當(dāng)前狀態(tài)為第三狀態(tài),則執(zhí)行步驟S209。[0068]步驟S208,判斷該至少一個已經(jīng)完成傳輸?shù)姆制?,每種分片大小的使用次數(shù)是否分別達(dá)到預(yù)設(shè)的第二閾值(例如2次)。若該每種分片大小的使用次數(shù)達(dá)到該第二閾值,則執(zhí)行所述步驟S203,若該每種分片大小的使用次數(shù)未達(dá)到該第二閾值,則執(zhí)行所述步驟S204。[0069]步驟S209,統(tǒng)計(jì)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏斔俾蔬B續(xù)超出預(yù)設(shè)范圍的次數(shù),并判斷所統(tǒng)計(jì)的次數(shù)是否達(dá)到預(yù)設(shè)的第三閾值。若所統(tǒng)計(jì)的次數(shù)未達(dá)到該第三閾值,則執(zhí)行所述步驟S204。若所統(tǒng)計(jì)的次數(shù)達(dá)到該第三閾值,則執(zhí)行所述步驟S206。[0070]值得注意的是,由于文件待發(fā)送部分的大小可能不足以按照所設(shè)定的當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制?,或者在按照所設(shè)定的當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制螅募l(fā)送部分的大小較小,沒必要再將文件待發(fā)送部分作為下一個分片進(jìn)行傳輸,因此,所述步驟S204和步驟S206可以進(jìn)一步包括:判斷該文件待發(fā)送部分的大小是否小于預(yù)設(shè)的第四閾值。若該文件待發(fā)送部分的大小小于該第四閾值,則設(shè)定當(dāng)前待傳輸分片的大小為該文件待發(fā)送部分的大小,然后再執(zhí)行所述步驟S205。若該文件待發(fā)送部分的大小不小于該第四閾值,則直接執(zhí)行該步驟S205。[0071]按照本實(shí)施的文件傳輸方法,對該當(dāng)前傳輸狀態(tài)的更新條件作出了進(jìn)一步限定,可以使所設(shè)定的待傳輸分片的大小更加適應(yīng)網(wǎng)絡(luò)的傳輸能力,從而提升文件的傳輸速度。[0072]第五實(shí)施例[0073]參閱圖7所不,本發(fā)明第五實(shí)施例提供一種文件傳輸方法,其相比于第四實(shí)施例的文件傳輸方法,進(jìn)一步對所述步驟SlOl提出一種具體的實(shí)現(xiàn)方案。先設(shè)所獲取的該文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)包括:該文件的首個分片的大小S1,在該分片大小S1下的傳輸速率的平滑值V1,最近完成傳輸?shù)姆制笮n,在該分片大小SnT的傳輸速率的平滑值Vs,與該分片大小Sn不同且在該分片大小Sn之前最近傳輸?shù)姆制笮tl,在該分片大小Stl下的傳輸速率的平滑值%。設(shè)該當(dāng)前待傳輸分片的大小為sn+1,則本實(shí)施例相比于第四實(shí)施例的文件傳輸方法,所述步驟SlOl進(jìn)一步包括:[0074]步驟S11,判斷該Sn是否為O。若Sn不為0,則說明當(dāng)前待傳輸?shù)姆制粸樵撐募氖讉€分片,進(jìn)入步驟S12。若snS0,則說明當(dāng)前待傳輸?shù)姆制瑸樵撐募氖讉€分片,進(jìn)入步驟S25。[0075]步驟S12,更新該Sn的使用次數(shù)N。[0076]步驟S13,根據(jù)所獲取的該SpVpSn、Vs、S0和Vtl計(jì)算該速率變化指數(shù)S。計(jì)算該S的公式為:s=[(Vs-V0)/V1]/[(Sn-S0)/SJ0[0077]步驟S14,確定當(dāng)前傳輸狀態(tài)。若當(dāng)前傳輸狀態(tài)為該第一狀態(tài),則進(jìn)入步驟S15。若該當(dāng)前傳輸狀態(tài)為該第二狀態(tài),則進(jìn)入步驟S18。若當(dāng)前傳輸狀態(tài)為該第三狀態(tài),則進(jìn)入步驟S21。[0078]步驟S15,判斷是否該Sn的使用次數(shù)N等于預(yù)設(shè)的第二閾值Nmax,且所計(jì)算出的該速率變化指數(shù)S小于預(yù)設(shè)的第一閾值Smin。若是,則進(jìn)入步驟S16,若否,則進(jìn)入步驟S17。[0079]步驟S16,更新當(dāng)前傳輸狀態(tài)為第二狀態(tài),設(shè)定Sn+1為第二狀態(tài)對應(yīng)的系數(shù)B與Sn的乘積,然后進(jìn)入步驟S27。[0080]步驟S17,設(shè)定Sn+1為第一狀態(tài)對應(yīng)的系數(shù)A與Sn的乘積,然后進(jìn)入步驟S27。[0081]步驟S18,判斷是否該Sn的使用次數(shù)N等于預(yù)設(shè)的第二閾值Nmax,且所計(jì)算出的該速率變化指數(shù)S小于預(yù)設(shè)的第一閾值Smin。若是,則進(jìn)入步驟S19,若否,則進(jìn)入步驟S20。[0082]步驟S19,更新當(dāng)前傳輸狀態(tài)為第三狀態(tài),設(shè)定Sn+1與Sn相等,然后進(jìn)入步驟S27。[0083]步驟S20,設(shè)定Sn+1為第二狀態(tài)對應(yīng)的系數(shù)B與Sn的乘積,然后進(jìn)入步驟S27。[0084]步驟S21,判斷Vs與第三狀態(tài)下的基準(zhǔn)速率Vstable之間的差值是否小于預(yù)設(shè)的第三閾值。若否,說明該最近完成傳輸?shù)姆制膫鬏斔俾食鲈擃A(yù)設(shè)范圍,則進(jìn)入步驟S22。若是,說明該最近完成傳輸?shù)姆制膫鬏斔俾饰闯鲈擃A(yù)設(shè)范圍,則進(jìn)入步驟S23。該第三閾值可以為該基準(zhǔn)速率V—與某百分比常量D的乘積。[0085]步驟S22,更新該最近完成傳輸?shù)姆制膫鬏斔俾食鲈擃A(yù)設(shè)范圍的次數(shù)M,即在該M的基礎(chǔ)上加I。[0086]步驟S23,將該最近完成傳輸?shù)姆制膫鬏斔俾食鲈擃A(yù)設(shè)范圍的次數(shù)M清零。[0087]步驟S24,判斷該最近完成傳輸?shù)姆制膫鬏斔俾食鲈擃A(yù)設(shè)范圍的次數(shù)M是否達(dá)到預(yù)設(shè)的第四閾值Mmax。若是,則進(jìn)入步驟S25。若否,則進(jìn)入步驟S26。[0088]步驟S25,更新當(dāng)前傳輸狀態(tài)為第一狀態(tài),設(shè)定Sn+1與S1相等,然后進(jìn)入步驟S27。[0089]步驟S26,設(shè)定Sn+1與Sn相等。[0090]步驟S27,判斷該文件待發(fā)送部分的大小Fs是否小于預(yù)設(shè)的第四閾值F。若是,則進(jìn)入步驟S28。若否,則進(jìn)入步驟S29。[0091]步驟S28,設(shè)定Sn+1與Fs相等。[0092]步驟S29,返回所設(shè)定的Sn+1,按照所設(shè)定的Sn+1的分片大小從該文件中截取當(dāng)前待傳輸?shù)姆制赃M(jìn)行傳輸。[0093]第六實(shí)施例[0094]根據(jù)第一實(shí)施例提供的文件傳輸方法在互聯(lián)網(wǎng)上傳輸文件,是采用設(shè)定未收到回復(fù)信息的超時時間來監(jiān)控分片是否傳輸成功的。該超時時間一般是根據(jù)分片大小和不同互聯(lián)網(wǎng)的平均帶寬或最近的歷史帶寬實(shí)測數(shù)據(jù)所估算出來的一個固定值或動態(tài)值。[0095]然而,由于移動互聯(lián)網(wǎng)特別是非WIFI網(wǎng)絡(luò)的網(wǎng)絡(luò)質(zhì)量變化非??烨曳群艽螅h(yuǎn)沒有有線網(wǎng)絡(luò)那么穩(wěn)定,在絕大多數(shù)時候,某一種移動互聯(lián)網(wǎng)下的實(shí)際帶寬都與統(tǒng)計(jì)得到的平均帶寬有很大的差距。因此使用根據(jù)分片大小和互聯(lián)網(wǎng)的平均帶寬估算出來的超時時間,在文件分片的實(shí)際傳輸過程中將非常容易超時。而由于移動互聯(lián)網(wǎng)的網(wǎng)絡(luò)質(zhì)量變化快而且經(jīng)常是“非連續(xù)”、“跳變”的,根據(jù)歷史測量得到的前一刻的帶寬很難作為一個依據(jù)去估計(jì)后一刻的帶寬。因此,使用設(shè)定該超時時間來監(jiān)控分片是否傳輸成功,容易導(dǎo)致文件單個分片的傳輸失敗率很高。此外,由于達(dá)到超時時間而宣告文件的分片傳輸失敗后,數(shù)據(jù)還是會經(jīng)網(wǎng)絡(luò)傳輸完畢才會結(jié)束該分片的傳輸過程,造成這個分片的整個發(fā)送過程所產(chǎn)生的流量都因?yàn)閭鬏斒〉慕Y(jié)果而浪費(fèi)掉了。[0096]為進(jìn)一步解決上述問題,參閱圖8所示,本發(fā)明第六實(shí)施例提供一種文件傳輸方法,其相比于第一實(shí)施例的文件傳輸方法,所述的步驟S102進(jìn)一步包括:[0097]步驟S301,在一主進(jìn)程內(nèi)將從該文件中提取的分片提交至該待傳輸隊(duì)列中;[0098]步驟S302,持續(xù)等待中斷信號;[0099]步驟S303,監(jiān)控該主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生,若否,則發(fā)出中斷等待請求,并在該中斷等待請求中附加該主進(jìn)程在預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量的信息;[0100]步驟S304,若接收到該中斷等待請求或者該接收端返回的回復(fù)信息,則結(jié)束該步驟S302。[0101]按照本實(shí)施例的文件傳輸方法,采用監(jiān)控主進(jìn)程未產(chǎn)生上行數(shù)據(jù)流量的持續(xù)時間來判斷分片是否傳輸成功,相比于傳統(tǒng)的發(fā)送超時的處理方式,能夠更好地適應(yīng)不穩(wěn)定的網(wǎng)絡(luò)環(huán)境如移動互聯(lián)網(wǎng),提高分片傳輸?shù)某晒β剩p少在分片傳輸過程中由于超時問題導(dǎo)致的流量浪費(fèi)。[0102]在一些實(shí)例中,上述方法的各步驟的實(shí)現(xiàn)細(xì)節(jié)如下:[0103]步驟S301中所述的主進(jìn)程是指要傳輸該分片的進(jìn)程。例如,某一文件傳輸應(yīng)用所在的進(jìn)程。該分片可以按照超文本傳輸協(xié)議(HyperTextTransferProtocol,HTTP)封裝成網(wǎng)絡(luò)數(shù)據(jù)包。[0104]步驟S302所述的中斷信號包括所述的中斷等待請求或者接收端120返回的回復(fù)信息等等。此外,在步驟S302執(zhí)行的過程中,還可以中斷主進(jìn)程的執(zhí)行。[0105]步驟S303可以在不同于該主進(jìn)程的一個新的監(jiān)控進(jìn)程中執(zhí)行。所述的預(yù)定時間段是可以允許的網(wǎng)絡(luò)超時時間,其可以按照具體的需要進(jìn)行設(shè)定,例如可以選5秒。所述的上行數(shù)據(jù)流量是主進(jìn)程將該分片提交給該待傳輸隊(duì)列后,該待傳輸隊(duì)列將該分片交由操作系統(tǒng)通過網(wǎng)絡(luò)傳輸出去而產(chǎn)生的。[0106]若主進(jìn)程在該預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量,則說明主進(jìn)程在該預(yù)定時間段內(nèi)沒有任何一個字節(jié)被通過網(wǎng)絡(luò)傳輸出去,意味著本次該分片傳輸失敗,因此需要發(fā)出該中斷等待請求以使主進(jìn)程停止等待中斷信號。在發(fā)出該中斷等待請求后,該步驟S303結(jié)束。[0107]若主進(jìn)程在該預(yù)定時間段內(nèi)有上行數(shù)據(jù)流量產(chǎn)生,則說明主進(jìn)程在該預(yù)定時間段內(nèi)有數(shù)據(jù)被通過網(wǎng)絡(luò)傳輸出去,意味著該分片正在發(fā)送過程中。為了避免用戶由于等待而產(chǎn)生的焦慮心情,若主進(jìn)程在該預(yù)定時間段內(nèi)有上行數(shù)據(jù)流量產(chǎn)生,步驟S303還可以通過動畫、文字等方式提示用戶該文件正在發(fā)送中。[0108]步驟S304中,若是由于接收到該中斷等待請求而結(jié)束步驟S302,則根據(jù)該中斷等待請求中附加的該主進(jìn)程在預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量的信息,返回該分片傳輸失敗的傳輸結(jié)果。若是由于接收到接收端120返回的回復(fù)信息而結(jié)束步驟S302,則根據(jù)該回復(fù)信息判斷該接收端120是否成功接收該分片。若該接收端120未成功接收該分片,也返回該分片傳輸失敗的傳輸結(jié)果。若該接收端120已成功接收該分片,則返回該分片傳輸成功的傳輸結(jié)果。當(dāng)接收到該接收端120返回的回復(fù)信息后,觸發(fā)步驟S303結(jié)束。[0109]此外,在步驟S302后,還可以有一個監(jiān)控是否發(fā)生網(wǎng)絡(luò)異常,例如網(wǎng)絡(luò)連接斷開、網(wǎng)絡(luò)連接受限制等網(wǎng)絡(luò)異常的步驟。若發(fā)生該網(wǎng)絡(luò)異常,則結(jié)束步驟S302和步驟S303,并返回該分片傳輸失敗的傳輸結(jié)果。[0110]第七實(shí)施例[0111]參閱圖9所不,本發(fā)明第七實(shí)施例提供一種文件傳輸方法,其相比于第六實(shí)施例的文件傳輸方法,進(jìn)一步對所述步驟S303提出一種實(shí)現(xiàn)方案:通過周期性地監(jiān)控該主進(jìn)程的上行數(shù)據(jù)流量來判斷主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生。具體而言,該步驟S303包括:[0112]步驟SI,啟動所述的監(jiān)控進(jìn)程,記錄該主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量為TBo。啟動一個計(jì)數(shù)器,將該計(jì)數(shù)器的值T的初始值賦為零,該計(jì)數(shù)器用于對主進(jìn)程未產(chǎn)生上行數(shù)據(jù)流量的持續(xù)時間進(jìn)行計(jì)時。啟動一個定時器(Timer),該定時器用于每經(jīng)過一段預(yù)設(shè)時間t觸發(fā)一次步驟S2。[0113]步驟S2,每當(dāng)被該定時器觸發(fā)時,記錄主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量TBn,并獲取上一次被該定時器觸發(fā)時所記錄的主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量TBo。若本次為第一次被該定時器觸發(fā),則獲取該監(jiān)控進(jìn)程啟動時所記錄的主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量TBo。[0114]步驟S3,判斷在本次被定時器觸發(fā)前的預(yù)設(shè)時間t內(nèi)主進(jìn)程產(chǎn)生的上行數(shù)據(jù)流量TB是否為零,該TB可以通過求解所述TBn與TBo之差值而得出。若該TB不為零,則執(zhí)行步驟S4,若該TB為零,則執(zhí)行步驟S5。[0115]步驟S4,將計(jì)數(shù)器的值T清零,并提示用戶該文件正在發(fā)送中。該TB不為零說明在本次被定時器觸發(fā)前的預(yù)設(shè)時間t內(nèi)主進(jìn)程有上行數(shù)據(jù)流量產(chǎn)生,該文件正在發(fā)送中,因此需要將該計(jì)數(shù)器的值T清零,以便對該主進(jìn)程未產(chǎn)生上行數(shù)據(jù)流量的持續(xù)時間重新進(jìn)行計(jì)時。[0116]步驟S5,將計(jì)數(shù)器的值T更新為T+t,并判斷計(jì)數(shù)器更新后的值T是否小于預(yù)設(shè)上限閾值Tmax。該預(yù)設(shè)上限閾值Tmax為所述預(yù)設(shè)時間t的整數(shù)倍。若T小于該Tmax,則返回步驟S2。若T不小于該Tmax,則執(zhí)行步驟S6。[0117]步驟S6,發(fā)出該中斷等待請求,并在該中斷等待請求中附加該主進(jìn)程在預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量的信息。該預(yù)定時間段即為從當(dāng)前時間點(diǎn)起,剛剛過去的該預(yù)設(shè)上限閾值(例如5秒)的時間段。[0118]綜上所述,在第六實(shí)施例的文件傳輸方法的基礎(chǔ)上,本實(shí)施例提供的文件傳輸方法可以進(jìn)一步通過周期性地監(jiān)控該主進(jìn)程的上行數(shù)據(jù)流量來判斷主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生。[0119]第八實(shí)施例[0120]參閱圖10所示,本發(fā)明第八實(shí)施例提供一種文件傳輸裝置100,包括提取模塊101、傳輸模塊102、判斷模塊103和重傳模塊104??梢岳斫?,上述的各模塊是指計(jì)算機(jī)程序或者程序段,用于執(zhí)行某一項(xiàng)或多項(xiàng)特定的功能。此外,上述各模塊的區(qū)分并不代表實(shí)際的程序代碼也必須是分開的。[0121]提取模塊101,用于從待傳輸至接收端的文件中提取一個分片。[0122]傳輸模塊102,用于將該分片提交至待傳輸隊(duì)列,并監(jiān)控該分片是否傳輸成功。在本實(shí)施例中,還可以先對該分片和該文件進(jìn)行加密處理,然后將該分片及其加密值與該文件的加密值封裝成一個數(shù)據(jù)包提交至該待傳輸隊(duì)列,以確保該分片和文件在傳輸過程中的完整性。[0123]判斷模塊103,用于若該分片未傳輸成功,則判斷該分片的重傳次數(shù)是否達(dá)到預(yù)設(shè)的次數(shù)閾值。若該分片的重傳次數(shù)達(dá)到該次數(shù)閾值,則判斷該文件傳輸失敗,可以結(jié)束傳輸或重新傳輸該文件。[0124]重傳模塊104,用于若該分片的重傳次數(shù)未達(dá)到該次數(shù)閾值,則在等待一段預(yù)設(shè)時間后重新執(zhí)行該傳輸模塊102,并更新該分片的重傳次數(shù)。所述的預(yù)設(shè)時間將隨著該分片的重傳次數(shù)的增加而延長。[0125]對于以上各模塊的具體工作過程,可進(jìn)一步參考本發(fā)明第一實(shí)施例提供的文件傳輸方法,在此不再重復(fù)。[0126]綜上所述,本實(shí)施例的文件傳輸裝置100,在文件的單個分片傳輸失敗后,將等待一段時間再重傳該分片,相比于傳統(tǒng)的一旦傳輸失敗就立刻重傳分片的方式,該方法能夠提高文件的單個分片的傳輸成功率,進(jìn)而提升該文件的傳輸成功率。[0127]第九實(shí)施例[0128]參閱圖11所示,本發(fā)明第九實(shí)施例提供一種文件傳輸裝置200,其相比于第八實(shí)施例的文件傳輸裝置100,還包括:[0129]檢查模塊105,用于若該分片傳輸成功,貝U檢查該文件是否已傳輸完成。若該文件未傳輸完成,執(zhí)行所述提取模塊101。若該文件已傳輸完成,則判定該文件傳輸成功。[0130]具體而言,該檢查模塊105先接收該接收端120返回的回復(fù)信息,該回復(fù)信息包括該接收端120已接收該文件所有分片大小的總和。然后,檢查模塊105判斷該接收端120已接收該文件所有分片大小的總和與該文件的大小是否相等,若是,則判定該文件已傳輸完成,若否,則判定該文件未傳輸完成。[0131]對于以上模塊的具體工作過程,可進(jìn)一步參考本發(fā)明第二實(shí)施例提供的文件傳輸方法,在此不再重復(fù)。[0132]綜上所述,本實(shí)施例的文件傳輸裝置200,可以確定該文件是否傳輸完成,若該文件未傳輸完成,則繼續(xù)從該文件中提取下一個分片進(jìn)行傳輸,直至文件傳輸完成。[0133]第十實(shí)施例[0134]參閱圖12所示,本發(fā)明第十實(shí)施例提供一種文件傳輸裝置300,其相比于第八實(shí)施例的文件傳輸裝置100,所述的提取模塊101進(jìn)一步包括:[0135]獲取模塊301,用于獲取該文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率。所述的傳輸速率可以根據(jù)每個已經(jīng)完成傳輸?shù)姆制拇笮『蛡鬏敃r間計(jì)算得出。計(jì)算出該傳輸速率后,還可以對該傳輸速率使用預(yù)先設(shè)定的平滑因子進(jìn)行平滑處理。[0136]計(jì)算模塊302,用于根據(jù)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)計(jì)算速率變化指數(shù),該速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率。[0137]第一判斷模塊303,用于判斷該速率變化指數(shù)是否小于預(yù)設(shè)的第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài)。在本實(shí)施例中,該當(dāng)前傳輸狀態(tài)包括第一狀態(tài)、第二狀態(tài)和第三狀態(tài)。每個狀態(tài)對應(yīng)一個用于表示分片大小的增長速度的系數(shù)。其中,該第一狀態(tài)和第二狀態(tài)對應(yīng)的系數(shù)大于1,并且第一狀態(tài)對應(yīng)的系數(shù)大于第二狀態(tài)對應(yīng)的系數(shù)。該第三狀態(tài)對應(yīng)的系數(shù)為I。具體而言,若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第一狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第二狀態(tài)。若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第二狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第三狀態(tài)。[0138]第一設(shè)定模塊304,用于獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積。[0139]截取模塊305,用于按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制賵?zhí)行該傳輸模塊102以傳輸該分片。[0140]對于以上各模塊的具體工作過程,可進(jìn)一步參考本發(fā)明第三實(shí)施例提供的文件傳輸方法,在此不再重復(fù)。[0141]綜上所述,本實(shí)施例的文件傳輸裝置300,根據(jù)文件中已完成傳輸?shù)姆制膫鬏攨?shù)動態(tài)地設(shè)定文件當(dāng)前待傳輸分片的大小,可以使該當(dāng)前待傳輸分片的大小能夠適應(yīng)網(wǎng)絡(luò)質(zhì)量和帶寬的要求,從而提升網(wǎng)絡(luò)在傳輸文件時的有效帶寬和文件的傳輸速度。[0142]第H^一實(shí)施例[0143]參閱圖13所示,本發(fā)明第十一實(shí)施例提供一種文件傳輸裝置400,其相比于第十實(shí)施例的文件傳輸裝置300,所述的提取模塊101進(jìn)一步包括第二判斷模塊306、第二設(shè)定模塊307、確定模塊308、第三判斷模塊309和第四判斷模塊310。[0144]第二判斷模塊306,用于在執(zhí)行所述獲取模塊301之前,判斷當(dāng)前待傳輸?shù)姆制欠駷樵撐募氖讉€分片。若當(dāng)前待傳輸?shù)姆制瑸樵撐募氖讉€分片,則執(zhí)行第二設(shè)定模塊307。若當(dāng)前待傳輸?shù)姆制粸樵撐募氖讉€分片,則執(zhí)行獲取模塊301。[0145]第二設(shè)定模塊307,用于設(shè)定當(dāng)前待傳輸分片的大小為當(dāng)前網(wǎng)絡(luò)類型下分片大小的默認(rèn)值,并將該當(dāng)前傳輸狀態(tài)更新為該第一狀態(tài),然后執(zhí)行截取模塊305。[0146]確定模塊308,用于在執(zhí)行第一判斷模塊303之前,確定當(dāng)前傳輸狀態(tài)是否為第一狀態(tài)或第二狀態(tài)。若該當(dāng)前傳輸狀態(tài)為該第一狀態(tài)或第二狀態(tài),則執(zhí)行第三判斷模塊309。若當(dāng)前傳輸狀態(tài)為第三狀態(tài),則執(zhí)行第四判斷模塊310。[0147]第三判斷模塊309,用于判斷該至少一個已經(jīng)完成傳輸?shù)姆制校糠N分片大小的使用次數(shù)是否分別達(dá)到預(yù)設(shè)的第二閾值。若該每種分片大小的使用次數(shù)達(dá)到該第二閾值,則執(zhí)行第一判斷模塊303。若該每種分片大小的使用次數(shù)未達(dá)到該第二閾值,則執(zhí)行第一設(shè)定模塊304。[0148]第四判斷模塊310,用于統(tǒng)計(jì)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏斔俾蔬B續(xù)超出預(yù)設(shè)范圍的次數(shù),并判斷所統(tǒng)計(jì)的次數(shù)是否達(dá)到預(yù)設(shè)的第三閾值。若所統(tǒng)計(jì)的次數(shù)未達(dá)到該第三閾值,則執(zhí)行第一設(shè)定模塊304。若所統(tǒng)計(jì)的次數(shù)達(dá)到該第三閾值,則執(zhí)行第二設(shè)定模塊307。[0149]此外,所述的第一設(shè)定模塊304和第二設(shè)定模塊307還用于進(jìn)一步判斷該文件待發(fā)送部分的大小是否小于預(yù)設(shè)的第四閾值,若是,則設(shè)定當(dāng)前待傳輸分片的大小為該文件待發(fā)送部分的大小,然后再執(zhí)行所述截取模塊305。若否,則直接執(zhí)行該截取模塊305。[0150]對于以上各模塊的具體工作過程,可進(jìn)一步參考本發(fā)明第四實(shí)施例提供的文件傳輸方法,在此不再重復(fù)。[0151]綜上所述,本實(shí)施的文件傳輸裝置400對該當(dāng)前傳輸狀態(tài)的更新條件作出了進(jìn)一步限定,可以使所設(shè)定的待傳輸分片的大小更加適應(yīng)網(wǎng)絡(luò)的傳輸能力,從而提升文件的傳輸速度。[0152]第十二實(shí)施例[0153]參閱圖14所示,本發(fā)明第十二實(shí)施例提供一種文件傳輸裝置500,其相比于第八實(shí)施例的文件傳輸裝置100,所述的傳輸模塊102進(jìn)一步包括:[0154]提交模塊501,用于在一主進(jìn)程內(nèi)將從該文件中提取的分片提交至該待傳輸隊(duì)列中。[0155]等待模塊502,用于持續(xù)等待中斷信號。[0156]第一監(jiān)控模塊503,用于監(jiān)控該主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生,若否,則發(fā)出中斷等待請求,并在該中斷等待請求中附加該主進(jìn)程在預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量的信息。[0157]在發(fā)出該中斷等待請求后,該第一監(jiān)控模塊503將停止監(jiān)控該主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生。若監(jiān)控到主進(jìn)程在預(yù)定時間段內(nèi)有上行數(shù)據(jù)流量產(chǎn)生,則第一監(jiān)控模塊503還可以通過動畫、文字等方式提示用戶該文件正在發(fā)送中。在本實(shí)施例中,該第一監(jiān)控模塊503可以在不同于該主進(jìn)程的一個新的監(jiān)控進(jìn)程中執(zhí)行。[0158]第二監(jiān)控模塊504,用于若接收到該中斷等待請求或者該接收端返回的回復(fù)信息,則觸發(fā)該等待模塊502停止等待該中斷信號。[0159]若是由于接收到該中斷等待請求而觸發(fā)該等待模塊502停止等待中斷信號,則根據(jù)該中斷等待請求中附加的該主進(jìn)程在預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量的信息,返回該分片傳輸失敗的傳輸結(jié)果。[0160]若是由于接收到接收端120返回的回復(fù)信息而觸發(fā)該等待模塊102停止等待中斷信號,則根據(jù)該回復(fù)信息判斷該接收端120是否成功接收該分片。若該接收端120未成功接收該分片,也返回該分片傳輸失敗的傳輸結(jié)果。若該接收端120已成功接收該分片,則返回該分片傳輸成功的傳輸結(jié)果。此外,當(dāng)接收到該接收端120返回的回復(fù)信息后,該第二監(jiān)控模塊504還將觸發(fā)該第一監(jiān)控模塊503停止監(jiān)控該主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生。[0161]此外,該文件傳輸裝置500還可以包括一個第三監(jiān)控模塊505,用于在等待模塊502持續(xù)等待中斷信號的過程中,監(jiān)控是否發(fā)生網(wǎng)絡(luò)異常。若監(jiān)控到發(fā)生網(wǎng)絡(luò)異常,則觸發(fā)該等待模塊502停止等待中斷信號,以及觸發(fā)該第一監(jiān)控模塊503結(jié)束監(jiān)控該主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生,并返回該分片傳輸失敗的傳輸結(jié)果。[0162]對于以上各模塊的具體工作過程,可進(jìn)一步參考本發(fā)明第六實(shí)施例提供的文件傳輸方法,在此不再重復(fù)。[0163]綜上所述,本實(shí)施例的文件傳輸裝置500,采用監(jiān)控主進(jìn)程未產(chǎn)生上行數(shù)據(jù)流量的持續(xù)時間來判斷分片是否傳輸成功,相比于傳統(tǒng)的發(fā)送超時的處理方式,能夠更好地適應(yīng)不穩(wěn)定的網(wǎng)絡(luò)環(huán)境如移動互聯(lián)網(wǎng),提高分片傳輸?shù)某晒β剩p少在分片傳輸過程中由于超時問題導(dǎo)致的流量浪費(fèi)。[0164]第十三實(shí)施例[0165]參閱圖15所示,本發(fā)明第十三實(shí)施例提供一種文件傳輸裝置600,其相比于第十二實(shí)施例的文件傳輸裝置500,所述的第一監(jiān)控模塊503包括:[0166]啟動子模塊5031,用于啟動所述的監(jiān)控進(jìn)程,記錄該主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量為TBo,啟動一個計(jì)數(shù)器,將該計(jì)數(shù)器的值T的初始值賦為零,啟動一個定時器(Timer),該定時器用于每經(jīng)過一段預(yù)設(shè)時間t觸發(fā)一次獲取子模塊5032。[0167]獲取子模塊5032,用于每當(dāng)被該定時器觸發(fā)時,記錄主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量TBn,并獲取上一次被該定時器觸發(fā)時所記錄的主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量TBo。若本次為第一次被該定時器觸發(fā),則獲取該監(jiān)控進(jìn)程啟動時所記錄的主進(jìn)程已產(chǎn)生的上行數(shù)據(jù)流量TBo。[0168]判斷子模塊5033,用于判斷在本次被定時器觸發(fā)前的預(yù)設(shè)時間t內(nèi)主進(jìn)程產(chǎn)生的上行數(shù)據(jù)流量TB是否為零,該TB可以通過求解所述TBn與TBo之差值而得出。[0169]提示子模塊5034,用于若該TB不為零,則將計(jì)數(shù)器的值T清零,并提示用戶該文件正在發(fā)送中。[0170]更新子模塊5035,用于若該TB為零,則將計(jì)數(shù)器的值T更新為T+t,并判斷計(jì)數(shù)器更新后的值T是否小于預(yù)設(shè)上限閾值Tmax。若T小于該Tmax,則重新執(zhí)行該獲取子模塊5032。[0171]發(fā)送子模塊5036,用于若T不小于該Tmax,則發(fā)出該中斷等待請求,并在該中斷等待請求中附加該主進(jìn)程在預(yù)定時間段內(nèi)未產(chǎn)生上行數(shù)據(jù)流量的信息。[0172]對于以上各模塊的具體工作過程,可進(jìn)一步參考本發(fā)明第七實(shí)施例提供的文件傳輸方法,在此不再重復(fù)。[0173]綜上所述,相較于第十二實(shí)施例的文件傳輸裝置500,本實(shí)施例提供的文件傳輸裝置600可以進(jìn)一步通過周期性地監(jiān)控該主進(jìn)程的上行數(shù)據(jù)流量來判斷主進(jìn)程在預(yù)定時間段內(nèi)是否有上行數(shù)據(jù)流量產(chǎn)生。[0174]此外,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)可讀存儲介質(zhì),其內(nèi)存儲有計(jì)算機(jī)可執(zhí)行指令,上述的計(jì)算機(jī)可讀存儲介質(zhì)例如為非易失性存儲器例如光盤、硬盤、或者閃存。上述的計(jì)算機(jī)可執(zhí)行指令用于讓計(jì)算機(jī)或者類似的運(yùn)算裝置完成上述的文件傳輸方法中的各種操作。[0175]以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭示如上,然而并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容做出些許更動或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡介修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。【權(quán)利要求】1.一種文件傳輸方法,其特征在于,該方法包括以下步驟:獲取步驟:獲取待傳輸至接收端的文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率;計(jì)算步驟:根據(jù)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)計(jì)算速率變化指數(shù),該速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率;第一判斷步驟:判斷該速率變化指數(shù)是否小于預(yù)設(shè)的第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài);第一設(shè)定步驟:獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積;及截取步驟:按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中截取當(dāng)前待傳輸?shù)姆制M(jìn)行傳輸。2.如權(quán)利要求1所述的文件傳輸方法,其特征在于,所述獲取步驟還包括:對該傳輸速率進(jìn)行平滑處理。3.如權(quán)利要求1所述的文件傳輸方法,其特征在于,所述當(dāng)前傳輸狀態(tài)包括第一狀態(tài)、第二狀態(tài)和第三狀態(tài),其中第一狀態(tài)和第二狀態(tài)對應(yīng)的系數(shù)大于I,并且第一狀態(tài)對應(yīng)的系數(shù)大于第二狀態(tài)對應(yīng)的系數(shù),第三狀態(tài)對應(yīng)的系數(shù)為I。4.如權(quán)利要求3所述的文件傳輸方法,其特征在于,在所述獲取步驟前還包括:第二判斷步驟:判斷當(dāng)前待傳輸?shù)姆制欠駷樵撐募氖讉€分片,若是,則執(zhí)行第二設(shè)定步驟,若否,則執(zhí)行該獲取步驟'及所述第二設(shè)定步驟:設(shè)定當(dāng)前待傳輸分片的大小為當(dāng)前網(wǎng)絡(luò)類型下分片大小的默認(rèn)值,并將當(dāng)前傳輸狀態(tài)更新為該第一狀態(tài),然后執(zhí)行該截取步驟。5.如權(quán)利要求4所述的文件傳輸方法,其特征在于,在所述第一判斷步驟前還包括確定步驟:確定當(dāng)前傳輸狀態(tài),若該當(dāng)前傳輸狀態(tài)為該第一狀態(tài)或第二狀態(tài),則執(zhí)行該第一判斷步驟。6.如權(quán)利要求5所述的文件傳輸方法,其特征在于,在所述第一判斷步驟前還包括第三判斷步驟:若該當(dāng)前傳輸狀態(tài)為該第一狀態(tài)或第二狀態(tài),則判斷該至少一個已經(jīng)完成傳輸?shù)姆制?,每種分片大小的使用次數(shù)是否分別達(dá)到預(yù)設(shè)的第二閾值,若是,則執(zhí)行該第一判斷步驟,若否,則執(zhí)行該第一設(shè)定步驟。7.如權(quán)利要求5所述的文件傳輸方法,其特征在于,所述第一判斷步驟包括:若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第一狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第二狀態(tài);及若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第二狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第三狀態(tài)。8.如權(quán)利要求5所述的文件傳輸方法,其特征在于,該方法還包括第四判斷步驟,若該當(dāng)前傳輸狀態(tài)為該第三狀態(tài),則執(zhí)行該第四判斷步驟,該第四判斷步驟包括:統(tǒng)計(jì)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏斔俾蔬B續(xù)超出預(yù)設(shè)范圍的次數(shù),并判斷所統(tǒng)計(jì)的次數(shù)是否達(dá)到預(yù)設(shè)的第三閾值,若否,則執(zhí)行該第一設(shè)定步驟,若是,則執(zhí)行該第二設(shè)定步驟。9.如權(quán)利要求8所述的文件傳輸方法,其特征在于,所述第一設(shè)定步驟和第二設(shè)定步驟還包括:判斷該文件待發(fā)送部分的大小是否小于預(yù)設(shè)的第四閾值,若是,則設(shè)定當(dāng)前待傳輸分片的大小為該文件待發(fā)送部分的大小。10.一種文件傳輸裝置,其特征在于,該裝置包括:獲取模塊,用于獲取待傳輸至接收端的文件中至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù),該傳輸參數(shù)包括分片大小以及傳輸速率;計(jì)算模塊,用于根據(jù)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏攨?shù)計(jì)算速率變化指數(shù),該速率變化指數(shù)表征傳輸速率相對于該分片大小變化的速率;第一判斷模塊,用于判斷該速率變化指數(shù)是否小于預(yù)設(shè)的第一閾值,若是,則更新當(dāng)前傳輸狀態(tài)為一個不同的狀態(tài);第一設(shè)定模塊,用于獲取與該當(dāng)前傳輸狀態(tài)對應(yīng)的系數(shù),并設(shè)定當(dāng)前待傳輸分片的大小為該文件中最近完成傳輸?shù)姆制笮∨c該系數(shù)的乘積;及截取模塊,用于按照所設(shè)定的該當(dāng)前待傳輸分片的大小從該文件中獲取當(dāng)前待傳輸?shù)姆制M(jìn)行傳輸。11.如權(quán)利要求10所述的文件傳輸裝置,其特征在于,所述獲取模塊還用于對該傳輸速率進(jìn)行平滑處理。12.如權(quán)利要求10所述的文件傳輸裝置,其特征在于,所述當(dāng)前傳輸狀態(tài)包括第一狀態(tài)、第二狀態(tài)和第三狀態(tài),其中第一狀態(tài)和第二狀態(tài)對應(yīng)的系數(shù)大于1,并且第一狀態(tài)對應(yīng)的系數(shù)大于第二狀態(tài)對應(yīng)的系數(shù),第三狀態(tài)對應(yīng)的系數(shù)為I。13.如權(quán)利要求12所述的文件傳輸裝置,其特征在于,還包括:第二判斷模塊,用于在執(zhí)行所述獲取模塊之前,判斷當(dāng)前待傳輸?shù)姆制欠駷樵撐募氖讉€分片,若是,則執(zhí)行第二設(shè)定模塊,若否,則執(zhí)行該獲取模塊;及所述第二設(shè)定模塊,用于設(shè)定當(dāng)前待傳輸分片的大小為當(dāng)前網(wǎng)絡(luò)類型下分片大小的默認(rèn)值,并將當(dāng)前傳輸狀態(tài)更新為該第一狀態(tài),然后執(zhí)行該截取模塊。14.如權(quán)利要求13所述的文件傳輸裝置,其特征在于,還包括:確定模塊,用于確定當(dāng)前傳輸狀態(tài),若該當(dāng)前傳輸狀態(tài)為該第一狀態(tài)或第二狀態(tài),則執(zhí)行該第一判斷模塊。15.如權(quán)利要求14所述的文件傳輸裝置,其特征在于,還包括:第三判斷模塊,用于若該當(dāng)前傳輸狀態(tài)為該第一狀態(tài)或第二狀態(tài),則判斷該至少一個已經(jīng)完成傳輸?shù)姆制?,每種分片大小的使用次數(shù)是否分別達(dá)到預(yù)設(shè)的第二閾值,若是,則執(zhí)行該第一判斷模塊,若否,則執(zhí)行該第一設(shè)定模塊。16.如權(quán)利要求14所述的文件傳輸裝置,其特征在于,所述第一判斷模塊用于:若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第一狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第二狀態(tài);及若該速率變化指數(shù)小于該第一閾值,且當(dāng)前傳輸狀態(tài)為該第二狀態(tài),則更新當(dāng)前傳輸狀態(tài)為該第三狀態(tài)。17.如權(quán)利要求14所述的文件傳輸裝置,其特征在于,還包括第四判斷模塊,用于當(dāng)該當(dāng)前傳輸狀態(tài)為該第三狀態(tài)時執(zhí)行,該第四判斷模塊用于:統(tǒng)計(jì)該至少一個已經(jīng)完成傳輸?shù)姆制膫鬏斔俾蔬B續(xù)超出預(yù)設(shè)范圍的次數(shù),并判斷所統(tǒng)計(jì)的次數(shù)是否達(dá)到預(yù)設(shè)的第三閾值,若否,則執(zhí)行該第一設(shè)定模塊,若是,則執(zhí)行該第二設(shè)定模塊。18.如權(quán)利要求17所述的文件傳輸裝置,其特征在于,所述第一設(shè)定模塊和第二設(shè)定模塊還用于:判斷該文件待發(fā)送部分的大小是否小于預(yù)設(shè)的第四閾值,若是,則設(shè)定當(dāng)前待傳輸分片的大小為該文件待發(fā)送部分的大小?!疚臋n編號】H04L29/08GK104168081SQ201310186433【公開日】2014年11月26日申請日期:2013年5月20日優(yōu)先權(quán)日:2013年5月20日【發(fā)明者】廖志,廖海珍,張媛申請人:騰訊科技(深圳)有限公司