本發(fā)明涉及一種計(jì)算機(jī)數(shù)據(jù)通信傳輸領(lǐng)域,特別涉及一種數(shù)據(jù)發(fā)送方法及裝置、數(shù)據(jù)接收裝置以及數(shù)據(jù)傳輸系統(tǒng)。
背景技術(shù):在互聯(lián)網(wǎng)普及程度越來越高的今天,人們通過軟件來傳輸數(shù)據(jù)文件變得越來越頻繁。如何高效率的進(jìn)行文件傳輸,也變成了時(shí)下的技術(shù)熱點(diǎn)之一。一般而言,文件傳輸采用的協(xié)議有兩種:UDP協(xié)議或TCP協(xié)議。UDP(UserDatagramProtocol)也就是用戶數(shù)據(jù)報(bào)協(xié)議,它工作在IP層之上的傳輸層,提供一種簡單的不可靠的傳送服務(wù)。TCP(TransmissionControlProtocol)傳輸控制協(xié)議,也是工作在傳輸層上,不過它提供的是一種可靠的傳輸服務(wù)。這兩種協(xié)議都有各自的優(yōu)缺點(diǎn):使用UDP協(xié)議傳輸文件,雖然通信雙方不需要維護(hù)鏈接信息,不占用太多的系統(tǒng)資源,處理速度快,但在網(wǎng)絡(luò)繁忙的情況下,容易造成丟包和亂序,而為了糾正這些問題,需要在應(yīng)用層面增加控制協(xié)議,并且需要共用同一條數(shù)據(jù)通道,這樣會(huì)降低文件的傳輸效率。而使用TCP協(xié)議傳輸文件,當(dāng)傳送的數(shù)據(jù)量過多時(shí),TCP層緩沖區(qū)大小將會(huì)成為瓶頸,而且TCP本身的重傳機(jī)制,也將會(huì)影響到高效率的傳輸。
技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明提出一種數(shù)據(jù)發(fā)送方法及裝置、數(shù)據(jù)接收裝置以及數(shù)據(jù)傳輸系統(tǒng),以進(jìn)一步提高數(shù)據(jù)傳輸?shù)男?。第一方面,本發(fā)明公開了一種數(shù)據(jù)發(fā)送方法,該方法通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下步驟:監(jiān)聽步驟、UDP通道建立步驟和發(fā)送方信息收發(fā)步驟。其中,監(jiān)聽步驟為,在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立步驟為,在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將所述第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;所述第二端口與所述第三端口之間建立UDP通道;發(fā)送方信息收發(fā)步驟為,通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。進(jìn)一步地,上述數(shù)據(jù)發(fā)送方法中,所述發(fā)送方信息收發(fā)步驟進(jìn)一步包括:第一判斷步驟、分片步驟和發(fā)送步驟。其中,第一判斷步驟為,判斷所述文件數(shù)據(jù)的數(shù)據(jù)包能否通過最大傳輸單元;分片步驟為,在所述文件數(shù)據(jù)的數(shù)據(jù)包不能通過最大傳輸單元的情況下,對(duì)所述數(shù)據(jù)包進(jìn)行分片處理;發(fā)送步驟為,對(duì)分片處理后的文件數(shù)據(jù)的數(shù)據(jù)包通過所述UDP通道進(jìn)行發(fā)送。進(jìn)一步地,上述數(shù)據(jù)發(fā)送方法中,所述信息發(fā)送步驟進(jìn)一步包括:網(wǎng)絡(luò)擁堵計(jì)算步驟和數(shù)據(jù)包大小調(diào)整步驟。其中,網(wǎng)絡(luò)擁堵計(jì)算步驟為,根據(jù)所述接收方反饋的確認(rèn)接收信息,計(jì)算網(wǎng)絡(luò)的擁堵狀況;數(shù)據(jù)包大小調(diào)整步驟為,根據(jù)所述網(wǎng)絡(luò)的擁堵狀況調(diào)整所述控制信息和/或所述文件數(shù)據(jù)的數(shù)據(jù)包的容量大小。進(jìn)一步地,上述數(shù)據(jù)發(fā)送方法中,所述信息發(fā)送步驟進(jìn)一步包括重傳處理步驟,該步驟根據(jù)所述接收方反饋的確認(rèn)接收信息,判斷是否存在需要進(jìn)行重傳處理的數(shù)據(jù)包,若有,則進(jìn)行重傳。進(jìn)一步地,上述數(shù)據(jù)發(fā)送方法中,所述信息發(fā)送步驟進(jìn)一步包括文件數(shù)據(jù)讀取步驟,該步驟在通過所述UDP通道發(fā)送文件數(shù)據(jù)前,通過內(nèi)存映射的方式讀取文件數(shù)據(jù)。本發(fā)明數(shù)據(jù)發(fā)送方法在發(fā)送數(shù)據(jù)文件時(shí),同時(shí)啟動(dòng)TCP通道和UDP通道,具體分工是,基于TCP通道來收發(fā)少量的控制信息數(shù)據(jù),利用UDP協(xié)議的發(fā)送效率,用UDP通道用來收發(fā)大量的文件數(shù)據(jù),通過將控制信息與數(shù)據(jù)文件傳輸?shù)陌l(fā)送分開的方式,避免了數(shù)據(jù)文件采用TCP通道傳輸時(shí),由于文件數(shù)據(jù)塊的傳輸占用的系統(tǒng)資源比較多而效率低的問題;同時(shí),由于少量的控制信息數(shù)據(jù)由TCP發(fā)送,則可以避免UDP通道發(fā)送數(shù)據(jù)時(shí),容易發(fā)生丟包亂序,以及控制協(xié)議選擇通道的問題。進(jìn)而,本實(shí)施例可以進(jìn)一步提高數(shù)據(jù)的傳輸效率,并且,具有很好的可靠性。第二方面,本發(fā)明數(shù)據(jù)發(fā)送裝置,其特征在于,通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括:監(jiān)聽模塊、UDP通道建立模塊和發(fā)送方信息收發(fā)模塊。其中,監(jiān)聽模塊用于在在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立模塊用于在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將所述第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;所述第二端口與所述第三端口之間建立UDP通道;發(fā)送方信息收發(fā)模塊用于通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。進(jìn)一步地,上述數(shù)據(jù)發(fā)送裝置中,所述發(fā)送方信息收發(fā)模塊進(jìn)一步包括:最大傳輸單元容量確定單元、數(shù)據(jù)包大小確定單元和發(fā)送單元。最大傳輸單元容量確定單元用于確定所述TCP通道和所述UDP通道的最大傳輸單元的容量;數(shù)據(jù)包大小確定單元用于根據(jù)所述TCP通道和所述UDP通道的最大傳輸單元的容量,確定所述文件數(shù)據(jù)的數(shù)據(jù)包大??;發(fā)送單元用于通過所述TCP通道發(fā)送控制信息,并所述文件數(shù)據(jù)的數(shù)據(jù)包進(jìn)行發(fā)送。進(jìn)一步地,上述數(shù)據(jù)發(fā)送裝置中,所述發(fā)送方信息發(fā)送模塊進(jìn)一步包括:網(wǎng)絡(luò)擁堵計(jì)算單元和數(shù)據(jù)包大小調(diào)整單元。其中,網(wǎng)絡(luò)擁堵計(jì)算單元用于根據(jù)所述接收方反饋的確認(rèn)接收信息,計(jì)算網(wǎng)絡(luò)的擁堵狀況;數(shù)據(jù)包大小調(diào)整單元用于根據(jù)所述網(wǎng)絡(luò)的擁堵狀況調(diào)整所述控制信息和/或所述文件數(shù)據(jù)的數(shù)據(jù)包的容量大小。進(jìn)一步地,上述數(shù)據(jù)發(fā)送裝置中,所述信息發(fā)送模塊進(jìn)一步包括重傳處理單元,該重傳處理單元用于根據(jù)所述接收方反饋的確認(rèn)接收信息,判斷是否存在需要進(jìn)行重傳處理的數(shù)據(jù)包,若有,則進(jìn)行重傳。進(jìn)一步地,上述數(shù)據(jù)發(fā)送裝置中,所述信息發(fā)送模塊進(jìn)一步包括文件數(shù)據(jù)讀取單元,該文件數(shù)據(jù)讀取單元用于在通過所述UDP通道發(fā)送文件數(shù)據(jù)前,通過內(nèi)存映射的方式讀取文件數(shù)據(jù)。本發(fā)明數(shù)據(jù)發(fā)送裝置在發(fā)送數(shù)據(jù)文件時(shí),同時(shí)啟動(dòng)TCP通道和UDP通道,具體分工是,基于TCP通道來收發(fā)少量的控制信息數(shù)據(jù),利用UDP協(xié)議的發(fā)送效率,用UDP通道用來收發(fā)大量的文件數(shù)據(jù),通過將控制信息與數(shù)據(jù)文件傳輸?shù)陌l(fā)送分開的方式,避免了數(shù)據(jù)文件采用TCP通道傳輸時(shí),由于文件數(shù)據(jù)塊的傳輸占用的系統(tǒng)資源比較多而效率低的問題;同時(shí),由于少量的控制信息數(shù)據(jù)由TCP發(fā)送,則可以避免UDP通道發(fā)送數(shù)據(jù)時(shí),容易發(fā)生丟包亂序,以及控制協(xié)議選擇通道的問題。進(jìn)而,本實(shí)施例可以進(jìn)一步提高數(shù)據(jù)的傳輸效率,并且,具有很好的可靠性。第三方面,本發(fā)明還公開了一種與上述數(shù)據(jù)發(fā)送裝置配合的數(shù)據(jù)接收裝置,包括:建立連接請(qǐng)求模塊、UDP信息接收模塊、綁定模塊和接收方信息收發(fā)模塊。其中,建立連接請(qǐng)求模塊用于向所述第一端口發(fā)送新連接建立請(qǐng)求;UDP信息接收模塊用于在與所述發(fā)送裝置建立連接后,通過TCP通道接收來所述數(shù)據(jù)發(fā)送裝置所綁定的第二端口信息以及該數(shù)據(jù)接收裝置所綁定第三端口信息;綁定模塊在所述第三端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,確定由所述第二端口與所述第三端口建立的UDP通道;接收方信息收發(fā)模塊用于通過所述TCP通道接收控制信息,通過所述UDP通道接收文件數(shù)據(jù)。進(jìn)一步地,上述數(shù)據(jù)接收裝置中,所述接收方信息收發(fā)模塊進(jìn)一步包括:控制信息接收單元、數(shù)據(jù)文件接收單元和確認(rèn)接收信息反饋單元。其中,控制信息接收單元用于通過所述TCP通道接收控制信息;數(shù)據(jù)文件接收單元用于通過所述UDP通道接收數(shù)據(jù)文件信息;確認(rèn)接收信息反饋單元用于通過所述TCP通道對(duì)所述數(shù)據(jù)文件的數(shù)據(jù)包被確認(rèn)接收的事件進(jìn)行反饋。本發(fā)明數(shù)據(jù)接收裝置接收文件時(shí),同時(shí)啟動(dòng)TCP通道和UDP通道,具體分工是,基于TCP通道來接收少量的控制信息數(shù)據(jù),利用UDP協(xié)議的發(fā)送效率,用UDP通道用來接收大量的文件數(shù)據(jù),通過將控制信息與數(shù)據(jù)文件傳輸?shù)陌l(fā)送分開的方式,避免了數(shù)據(jù)文件采用TCP通道傳輸時(shí),由于文件數(shù)據(jù)塊的傳輸占用的系統(tǒng)資源比較多而效率低的問題;同時(shí),由于少量的控制信息數(shù)據(jù)由TCP發(fā)送,則可以避免UDP通道發(fā)送數(shù)據(jù)時(shí),容易發(fā)生丟包亂序,以及控制協(xié)議選擇通道的問題。進(jìn)而,本實(shí)施例可以進(jìn)一步提高數(shù)據(jù)的傳輸效率,并且,具有很好的可靠性。第四方面,本發(fā)明還公開了一種數(shù)據(jù)傳輸系統(tǒng),包括上述任何一種數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置,并且,所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置相匹配。由于數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置在上面已經(jīng)進(jìn)行了詳細(xì)的說明,對(duì)應(yīng)的技術(shù)效果也做了分析,具有這兩個(gè)裝置的數(shù)據(jù)傳輸裝置也必然具有上述技術(shù)效果,在此不再贅述。附圖說明構(gòu)成本發(fā)明的一部分的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:圖1為本發(fā)明數(shù)據(jù)發(fā)送方法第一實(shí)施例的步驟流程圖;圖2為本發(fā)明數(shù)據(jù)發(fā)送方法第二實(shí)施例的步驟流程圖;圖3為本發(fā)明數(shù)據(jù)發(fā)送方法第三實(shí)施例的步驟流程圖;圖4為本發(fā)明數(shù)據(jù)發(fā)送方法第四實(shí)施例的步驟流程圖;圖5為本發(fā)明數(shù)據(jù)發(fā)送裝置第一實(shí)施例的結(jié)構(gòu)框圖;圖6為本發(fā)明數(shù)據(jù)發(fā)送裝置第二實(shí)施例的結(jié)構(gòu)框圖;圖7為本發(fā)明數(shù)據(jù)發(fā)送裝置第三實(shí)施例的結(jié)構(gòu)框圖;圖8為本發(fā)明數(shù)據(jù)發(fā)送裝置第四實(shí)施例的結(jié)構(gòu)框圖;圖9為本發(fā)明數(shù)據(jù)發(fā)送裝置的工作流程圖;圖10為本發(fā)明數(shù)據(jù)接收裝置第一實(shí)施例的結(jié)構(gòu)框圖圖11為本發(fā)明數(shù)據(jù)接收裝置另一實(shí)施例中,接收方信息收發(fā)模塊的結(jié)構(gòu)框圖;圖12為本發(fā)明數(shù)據(jù)接收裝置的工作流程圖。具體實(shí)施方式需要說明的是,在不沖突的情況下,本發(fā)明中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。參照?qǐng)D1,圖1為本發(fā)明數(shù)據(jù)發(fā)送方法第一實(shí)施例的步驟流程圖。本實(shí)施例數(shù)據(jù)發(fā)送方法通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下步驟:監(jiān)聽步驟S110、UDP通道建立步驟S120和發(fā)送方信息收發(fā)步驟S130。其中,監(jiān)聽步驟110為,在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立步驟S120為,在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將所述第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;所述第二端口與所述第三端口之間建立UDP通道;發(fā)送方信息收發(fā)步驟S130為,通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。本實(shí)施例數(shù)據(jù)發(fā)送方法在發(fā)送數(shù)據(jù)文件時(shí),同時(shí)啟動(dòng)TCP通道和UDP通道,具體分工是,基于TCP通道來收發(fā)少量的控制信息數(shù)據(jù),利用UDP協(xié)議的發(fā)送效率,用UDP通道用來收發(fā)大量的文件數(shù)據(jù),通過將控制信息與數(shù)據(jù)文件傳輸?shù)陌l(fā)送分開的方式,避免了數(shù)據(jù)文件采用TCP通道傳輸時(shí),由于文件數(shù)據(jù)塊的傳輸占用的系統(tǒng)資源比較多而效率低的問題;同時(shí),由于少量的控制信息數(shù)據(jù)由TCP發(fā)送,則可以避免UDP通道發(fā)送數(shù)據(jù)時(shí),容易發(fā)生丟包亂序,以及控制協(xié)議選擇通道的問題。進(jìn)而,本實(shí)施例可以進(jìn)一步提高數(shù)據(jù)的傳輸效率,并且,具有很好的可靠性。參照?qǐng)D2,圖2為本發(fā)明數(shù)據(jù)發(fā)送方法第二實(shí)施例的步驟流程圖。與上一實(shí)施例相似,本實(shí)施例通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下步驟:監(jiān)聽步驟S210、UDP通道建立步驟S220和發(fā)送方信息收發(fā)步驟S230。其中,監(jiān)聽步驟S210為,在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立步驟S220為,在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將所述第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;所述第二端口與所述第三端口之間建立UDP通道;發(fā)送方信息收發(fā)步驟為S230,通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。TCP的協(xié)議棧里會(huì)默認(rèn)啟用NAGLE算法(這是以發(fā)明人JohnNagle命的名字),主要是避免小量的數(shù)據(jù)對(duì)網(wǎng)絡(luò)的消耗。為了提高TCP通道發(fā)送控制信息的效率,所以關(guān)閉NAGLE算法。無論是TCP通道還是UDP通道都有一個(gè)MTU(最大傳輸單元,MaximumTransmissionUnit),該MTU是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,通常以字節(jié)為單位。如果超過這個(gè)MTU,系統(tǒng)會(huì)對(duì)數(shù)據(jù)包進(jìn)行分片處理,這會(huì)大大降低傳輸?shù)男?,所以發(fā)送數(shù)據(jù)包的大小不能超過MTU。郵件鑒于此,更加優(yōu)選地,本實(shí)施例中,信息收發(fā)步驟230進(jìn)一步包括:最大傳輸單元容量確定步驟2301、數(shù)據(jù)包大小確定步驟S2302和發(fā)送步驟S2303。其中,最大傳輸單元容量確定步驟為2301為,確定所述TCP通道和所述UDP通道的最大傳輸單元的容量;數(shù)據(jù)包大小確定步驟S2302為,根據(jù)所述TCP通道和所述UDP通道的最大傳輸單元的容量,確定所述文件數(shù)據(jù)的數(shù)據(jù)包大小;發(fā)送步驟S2303為,通過所述TCP通道發(fā)送控制信息,并所述文件數(shù)據(jù)的數(shù)據(jù)包進(jìn)行發(fā)送。在本實(shí)施例中,除了具有第一實(shí)施例的優(yōu)勢外,由于還設(shè)置有根據(jù)TCP通道還是UDP通道都有一個(gè)MTU確定文件數(shù)據(jù)的數(shù)據(jù)包的大小,因此,數(shù)據(jù)包的小小不會(huì)超過TCP通道或UDP通道的MTU,系統(tǒng)不會(huì)對(duì)數(shù)據(jù)包進(jìn)行分片處理,由此,本實(shí)施例相對(duì)于第一實(shí)施例,會(huì)大大提高數(shù)據(jù)傳輸?shù)男省⒄請(qǐng)D3,圖3為本發(fā)明數(shù)據(jù)發(fā)送方法第三實(shí)施例的步驟流程圖。與第一實(shí)施例相似,本實(shí)施例通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下步驟:監(jiān)聽步驟S310、UDP通道建立步驟S320和發(fā)送方信息收發(fā)步驟S330。其中,監(jiān)聽步驟310為,在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立步驟S320為,在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將所述第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;所述第二端口與所述第三端口之間建立UDP通道;發(fā)送方信息收發(fā)步驟為S330,通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。更加優(yōu)選地,本實(shí)施例中,信息收發(fā)步驟330進(jìn)一步包括:網(wǎng)絡(luò)擁堵計(jì)算步驟3301和數(shù)據(jù)包大小調(diào)整步驟3302。其中,網(wǎng)絡(luò)擁堵計(jì)算步驟3301為,根據(jù)接收方反饋的確認(rèn)接收信息,計(jì)算網(wǎng)絡(luò)的擁堵狀況;數(shù)據(jù)包大小調(diào)整步驟3302為,根據(jù)網(wǎng)絡(luò)的擁堵狀況調(diào)整控制信息和/或文件數(shù)據(jù)的數(shù)據(jù)包的容量大小。當(dāng)確立好發(fā)送方和接收方時(shí),TCP通道就用來收發(fā)文件的控制信息,控制信息包含文件信息、文件數(shù)據(jù)塊信息,它們的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如下,typedefstruct_tagFileInfo{charhash_code[32];//文件的數(shù)字指紋,采用MD5算法charfile_name[MAX_PATH];//文件名}FileInfo,*LPFileInfo;typedefstruct_tagFileBlockInfo{charhashcode[32];//文件的數(shù)字指紋,采用MD5算法intcur_block_num;//文件當(dāng)前塊號(hào)}FileBlockInfo,*LPFileBlockInfo;發(fā)送方用鏈表維護(hù)著已發(fā)送的數(shù)據(jù)信息塊,并且在發(fā)送端擁有一個(gè)定時(shí)器,設(shè)置一個(gè)超時(shí)時(shí)間,在這個(gè)時(shí)間段內(nèi)計(jì)算來自接收端發(fā)送過來的確認(rèn)信息,根據(jù)這些數(shù)據(jù)計(jì)算出網(wǎng)絡(luò)擁塞率,根據(jù)這個(gè)擁塞率及時(shí)調(diào)整UDP傳輸數(shù)據(jù)塊的大小,計(jì)算公式為:block_size=MAX_MSS_VALUE*jam_rate;可以看出,本實(shí)施例除了具有第一實(shí)施例的優(yōu)勢外,還具有良好的擁塞控制處理性能。UDP通道發(fā)送數(shù)據(jù)雖然發(fā)送十分高效,但是也會(huì)占用大量的帶寬,造成網(wǎng)絡(luò)擁塞,而負(fù)責(zé)傳輸控制協(xié)議的TCP通道將會(huì)受到影響,所以本實(shí)施例通過提供一個(gè)算法來計(jì)算網(wǎng)絡(luò)的擁塞情況,調(diào)整文件塊的大小,進(jìn)而解決萬羅擁塞的問題。參照?qǐng)D4,圖4為本發(fā)明數(shù)據(jù)發(fā)送方法第四實(shí)施例的步驟流程圖。與第一實(shí)施例相似,本實(shí)施例通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下步驟:監(jiān)聽步驟S410、UDP通道建立步驟S420和發(fā)送方信息收發(fā)步驟S430。其中,監(jiān)聽步驟410為,在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立步驟S420為,在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;第二端口與第三端口之間建立UDP通道;發(fā)送方信息收發(fā)步驟為S430,通過TCP通道發(fā)送控制信息,通過UDP通道發(fā)送文件數(shù)據(jù)。更加優(yōu)選地,本實(shí)施例中,信息收發(fā)步驟430進(jìn)一步包括:文件數(shù)據(jù)讀取步驟4301,該步驟在通過UDP通道發(fā)送文件數(shù)據(jù)前,通過內(nèi)存映射的方式讀取文件數(shù)據(jù);發(fā)送步驟4302,通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。在確立好發(fā)送方和接收方的同時(shí),UDP通道也隨之建立起來,發(fā)送端把文件數(shù)據(jù)讀入到內(nèi)存,為了降低文件讀寫的延時(shí),可以采取內(nèi)存映射技術(shù)快速的讀取文件,文件塊封包的大小根據(jù)上面的計(jì)算公式算出。typedefstruct_tagFileBlock{FileBlockInfoinfo;//文件數(shù)據(jù)塊信息unsignedshortfile_block_size;//文件數(shù)據(jù)塊大小charpFileBlock[MAX_BLOCK_SIZE];//文件數(shù)據(jù)塊的內(nèi)容}FileBlock,*LPFileBlock;正如本領(lǐng)域的技術(shù)人員所習(xí)知,讀寫文件所造成的延時(shí),也會(huì)對(duì)文件的傳輸效率造成影響,而本實(shí)施例采用內(nèi)存映射技術(shù)可以很好的解決這個(gè)問題。進(jìn)一步優(yōu)選地,上述數(shù)據(jù)發(fā)送方法實(shí)施例中,信息發(fā)送步驟進(jìn)一步包括重傳處理步驟,該步驟根據(jù)接收方反饋的確認(rèn)接收信息,判斷是否存在需要進(jìn)行重傳處理的數(shù)據(jù)包,若有,則進(jìn)行重傳。換句話說,在接收到返回來確認(rèn)信息后,會(huì)對(duì)比發(fā)送列表里面的已發(fā)送的數(shù)據(jù)信息塊塊,如果被確認(rèn),則該文件塊將會(huì)從鏈表里移除,否則將通知該數(shù)據(jù)信息塊對(duì)應(yīng)的文件數(shù)據(jù)塊重傳。參照?qǐng)D5,圖5為本發(fā)明數(shù)據(jù)發(fā)送裝置第一實(shí)施例的結(jié)構(gòu)框圖。本實(shí)施例數(shù)據(jù)發(fā)送裝置通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括:監(jiān)聽模塊50、UDP通道建立模塊52和發(fā)送方信息收發(fā)模塊54。其中,監(jiān)聽步驟50用于在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立模塊52用于在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;第二端口與第三端口之間建立UDP通道;發(fā)送方信息收發(fā)模塊54用于通過TCP通道發(fā)送控制信息,通過UDP通道發(fā)送文件數(shù)據(jù)。本實(shí)施例數(shù)據(jù)發(fā)送裝置在發(fā)送數(shù)據(jù)文件時(shí),同時(shí)啟動(dòng)TCP通道和UDP通道,具體分工是,基于TCP通道來收發(fā)少量的控制信息數(shù)據(jù),利用UDP協(xié)議的發(fā)送效率,用UDP通道用來收發(fā)大量的文件數(shù)據(jù),通過將控制信息與數(shù)據(jù)文件傳輸?shù)陌l(fā)送分開的方式,避免了數(shù)據(jù)文件采用TCP通道傳輸時(shí),由于文件數(shù)據(jù)塊的傳輸占用的系統(tǒng)資源比較多而效率低的問題;同時(shí),由于少量的控制信息數(shù)據(jù)由TCP發(fā)送,則可以避免UDP通道發(fā)送數(shù)據(jù)時(shí),容易發(fā)生丟包亂序,以及控制協(xié)議選擇通道的問題。進(jìn)而,本實(shí)施例可以進(jìn)一步提高數(shù)據(jù)的傳輸效率,并且,具有很好的可靠性。參照?qǐng)D6,圖6為本發(fā)明數(shù)據(jù)發(fā)送裝置第二實(shí)施例的結(jié)構(gòu)框圖。與上一實(shí)施例相似,本實(shí)施例通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括:監(jiān)聽模塊60、UDP通道建立模塊62和發(fā)送方信息收發(fā)模塊64。其中,監(jiān)聽模塊60用于在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立模塊62用于在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;第二端口與第三端口之間建立UDP通道;發(fā)送方信息收發(fā)模塊64用于通過TCP通道發(fā)送控制信息,通過UDP通道發(fā)送文件數(shù)據(jù)。TCP的協(xié)議棧里會(huì)默認(rèn)啟用NAGLE算法,主要是避免小量的數(shù)據(jù)對(duì)網(wǎng)絡(luò)的消耗。為了提高TCP通道發(fā)送控制信息的效率,所以關(guān)閉NAGLE算法。無論是TCP通道還是UDP通道都有一個(gè)MTU(最大傳輸單元,MaximumTransmissionUnit),該MTU是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大小,通常以字節(jié)為單位。如果超過這個(gè)MTU,系統(tǒng)會(huì)對(duì)數(shù)據(jù)包進(jìn)行分片處理,這會(huì)大大降低傳輸?shù)男剩园l(fā)送數(shù)據(jù)包的大小不能超過MTU。郵件鑒于此,更加優(yōu)選地,本實(shí)施例中,信息收發(fā)模塊64進(jìn)一步包括:最大傳輸單元容量確定單元641、數(shù)據(jù)包大小確定單元642和發(fā)送單元643。其中,最大傳輸單元容量確定單元641用于確定TCP通道和UDP通道的最大傳輸單元的容量;數(shù)據(jù)包大小確定單元642用于根據(jù)TCP通道和UDP通道的最大傳輸單元的容量,確定文件數(shù)據(jù)的數(shù)據(jù)包大??;發(fā)送單元643用于通過TCP通道發(fā)送控制信息,并文件數(shù)據(jù)的數(shù)據(jù)包進(jìn)行發(fā)送。在本實(shí)施例中,除了具有第一實(shí)施例的優(yōu)勢外,由于還設(shè)置有根據(jù)TCP通道還是UDP通道都有一個(gè)MTU確定文件數(shù)據(jù)的數(shù)據(jù)包的大小,因此,數(shù)據(jù)包的小小不會(huì)超過TCP通道或UDP通道的MTU,系統(tǒng)不會(huì)對(duì)數(shù)據(jù)包進(jìn)行分片處理,由此,本實(shí)施例相對(duì)于第一實(shí)施例,會(huì)大大提高數(shù)據(jù)傳輸?shù)男?。參照?qǐng)D7,圖7為本發(fā)明數(shù)據(jù)發(fā)送裝置第三實(shí)施例的結(jié)構(gòu)框圖。與第圖5所示的實(shí)施例相似,本實(shí)施例通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下模塊:監(jiān)聽模塊70、UDP通道建立模塊72和發(fā)送方信息收發(fā)模塊74。其中,監(jiān)聽模塊70用于在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立模塊72用于在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將所述第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;所述第二端口與所述第三端口之間建立UDP通道;發(fā)送方信息收發(fā)模塊74用于通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。更加優(yōu)選地,本實(shí)施例中,信息收發(fā)模塊74進(jìn)一步包括:網(wǎng)絡(luò)擁堵計(jì)算單元741和數(shù)據(jù)包大小調(diào)整單元742。其中,網(wǎng)絡(luò)擁堵計(jì)算單元741用于根據(jù)接收方反饋的確認(rèn)接收信息,計(jì)算網(wǎng)絡(luò)的擁堵狀況;數(shù)據(jù)包大小調(diào)整單元742用于根據(jù)網(wǎng)絡(luò)的擁堵狀況調(diào)整控制信息和/或文件數(shù)據(jù)的數(shù)據(jù)包的容量大小。當(dāng)確立好發(fā)送方和接收方時(shí),TCP通道就用來收發(fā)文件的控制信息,控制信息包含文件信息、文件數(shù)據(jù)塊信息,它們的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如下,typedefstruct_tagFileInfo{charhash_code[32];//文件的數(shù)字指紋,采用MD5算法charfile_name[MAX_PATH];//文件名}FileInfo,*LPFileInfo;typedefstruct_tagFileBlockInfo{charhashcode[32];//文件的數(shù)字指紋,采用MD5算法intcur_block_num;//文件當(dāng)前塊號(hào)}FileBlockInfo,*LPFileBlockInfo;發(fā)送方用鏈表維護(hù)著已發(fā)送的數(shù)據(jù)信息塊,并且在發(fā)送端擁有一個(gè)定時(shí)器,設(shè)置一個(gè)超時(shí)時(shí)間,在這個(gè)時(shí)間段內(nèi)計(jì)算來自接收端發(fā)送過來的確認(rèn)信息,根據(jù)這些數(shù)據(jù)計(jì)算出網(wǎng)絡(luò)擁塞率,根據(jù)這個(gè)擁塞率及時(shí)調(diào)整UDP傳輸數(shù)據(jù)塊的大小,計(jì)算公式為:block_size=MAX_MSS_VALUE*jam_rate;可以看出,本實(shí)施例除了具有第五實(shí)施例的優(yōu)勢外,還具有良好的擁塞控制處理性能。UDP通道發(fā)送數(shù)據(jù)雖然發(fā)送十分高效,但是也會(huì)占用大量的帶寬,造成網(wǎng)絡(luò)擁塞,而負(fù)責(zé)傳輸控制協(xié)議的TCP通道將會(huì)受到影響,所以本實(shí)施例通過提供一個(gè)算法來計(jì)算網(wǎng)絡(luò)的擁塞情況,調(diào)整文件塊的大小,進(jìn)而解決網(wǎng)絡(luò)擁塞的問題。參照?qǐng)D8,圖8為本發(fā)明數(shù)據(jù)發(fā)送裝置第四實(shí)施例的結(jié)構(gòu)框圖。與圖5所示的實(shí)施例相類似,本實(shí)施例通過TCP通道與UDP通道進(jìn)行數(shù)據(jù)傳輸,包括如下模塊:監(jiān)聽模塊80、UDP通道建立模塊82和發(fā)送方信息收發(fā)模塊84。其中,監(jiān)聽模塊80用于在第一端口進(jìn)行監(jiān)聽,若監(jiān)聽到新連接,則依據(jù)該新連接確立接收方;UDP通道建立模塊82用于在第二端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,并將第二端口信息,以及接收方綁定第三端口信息通過TCP通道發(fā)送給接收方;第二端口與第三端口之間建立UDP通道;發(fā)送方信息收發(fā)模塊84用于通過TCP通道發(fā)送控制信息,通過UDP通道發(fā)送文件數(shù)據(jù)。更加優(yōu)選地,本實(shí)施例中,信息收發(fā)模塊84進(jìn)一步包括:文件數(shù)據(jù)讀取單元841和發(fā)送單元842。文件數(shù)據(jù)讀取單元841用于在通過UDP通道發(fā)送文件數(shù)據(jù)前,通過內(nèi)存映射的方式讀取文件數(shù)據(jù);發(fā)送單元842用于通過所述TCP通道發(fā)送控制信息,通過所述UDP通道發(fā)送文件數(shù)據(jù)。在確立好發(fā)送方和接收方的同時(shí),UDP通道也隨之建立起來,發(fā)送端把文件數(shù)據(jù)讀入到內(nèi)存,為了降低文件讀寫的延時(shí),可以采取內(nèi)存映射技術(shù)快速的讀取文件,文件塊封包的大小根據(jù)上面的計(jì)算公式算出。typedefstruct_tagFileBlock{FileBlockInfoinfo;//文件數(shù)據(jù)塊信息unsignedshortfile_block_size;//文件數(shù)據(jù)塊大小charpFileBlock[MAX_BLOCK_SIZE];//文件數(shù)據(jù)塊的內(nèi)容}FileBlock,*LPFileBlock;正如本領(lǐng)域的技術(shù)人員所習(xí)知,讀寫文件所造成的延時(shí),也會(huì)對(duì)文件的傳輸效率造成影響,而本實(shí)施例采用內(nèi)存映射技術(shù)可以很好的解決這個(gè)問題。進(jìn)一步優(yōu)選地,上述數(shù)據(jù)發(fā)送方法實(shí)施例中,信息發(fā)送模塊進(jìn)一步包括重傳處理步驟,該模塊根據(jù)接收方反饋的確認(rèn)接收信息,判斷是否存在需要進(jìn)行重傳處理的數(shù)據(jù)包,若有,則進(jìn)行重傳。換句話說,在接收到返回來確認(rèn)信息后,會(huì)對(duì)比發(fā)送列表里面的已發(fā)送的數(shù)據(jù)信息塊塊,如果被確認(rèn),則該文件塊將會(huì)從鏈表里移除,否則將通知該數(shù)據(jù)信息塊對(duì)應(yīng)的文件數(shù)據(jù)塊重傳。參照?qǐng)D9,圖9為本發(fā)明數(shù)據(jù)發(fā)送方法一個(gè)實(shí)施例的工作流程圖。發(fā)送方進(jìn)程流程是這樣的:1)發(fā)送方在指定的端口監(jiān)聽,端口號(hào)為PORT;2)有新連接到來,確立發(fā)送方和接收方;3)確立完成后,發(fā)送方此時(shí)在PORT+1端口號(hào)進(jìn)行UDP綁定;4)發(fā)送方把自己綁定UDP端口號(hào)信息,以及接收方應(yīng)綁定的端口號(hào)信息通過TCP通道發(fā)送給接收方;5)通過TCP通道收發(fā)控制信息,通過UDP通道收發(fā)文件數(shù)據(jù)。參照?qǐng)D10,圖10為本發(fā)明數(shù)據(jù)接收裝置第一實(shí)施例的結(jié)構(gòu)框圖。本實(shí)施例數(shù)據(jù)接收裝置與上述實(shí)施例中的數(shù)據(jù)發(fā)送裝置配合使用,包括:建立連接請(qǐng)求模塊1000、UDP信息接收模塊1020、綁定模塊1030和接收方信息收發(fā)模塊1040。其中,建立連接請(qǐng)求模塊1000用于向第一端口發(fā)送新連接建立請(qǐng)求;UDP信息接收模塊1020用于在與發(fā)送裝置建立連接后,通過TCP通道接收來數(shù)據(jù)發(fā)送裝置所綁定的第二端口信息以及該數(shù)據(jù)接收裝置所綁定第三端口信息;綁定模塊1030用于在第三端口進(jìn)行基于用戶數(shù)據(jù)報(bào)協(xié)議的綁定,確定由第二端口與第三端口建立的UDP通道;接收方信息收發(fā)模塊1040用于通過TCP通道接收控制信息,通過UDP通道接收文件數(shù)據(jù)。本實(shí)施例數(shù)據(jù)接收裝置接收文件時(shí),同時(shí)啟動(dòng)TCP通道和UDP通道,具體分工是,基于TCP通道來接收少量的控制信息數(shù)據(jù),利用UDP協(xié)議的發(fā)送效率,用UDP通道用來接收大量的文件數(shù)據(jù),通過將控制信息與數(shù)據(jù)文件傳輸?shù)陌l(fā)送分開的方式,避免了數(shù)據(jù)文件采用TCP通道傳輸時(shí),由于文件數(shù)據(jù)塊的傳輸占用的系統(tǒng)資源比較多而效率低的問題;同時(shí),由于少量的控制信息數(shù)據(jù)由TCP發(fā)送,則可以避免UDP通道發(fā)送數(shù)據(jù)時(shí),容易發(fā)生丟包亂序,以及控制協(xié)議選擇通道的問題。進(jìn)而,本實(shí)施例可以進(jìn)一步提高數(shù)據(jù)的傳輸效率,并且,具有很好的可靠性。參照?qǐng)D11,圖11為本發(fā)明數(shù)據(jù)接收裝置第二實(shí)施例的結(jié)構(gòu)框圖。本實(shí)施例中,接收方信息收發(fā)模塊1040進(jìn)一步包括:控制信息接收單元10401、數(shù)據(jù)文件接收單元10402和確認(rèn)接收信息反饋單元10403。其中,控制信息接收單元10401用于通過TCP通道接收控制信息;數(shù)據(jù)文件接收單元10402用于通過UDP通道接收數(shù)據(jù)文件信息;確認(rèn)接收信息反饋單元10403用于通過TCP通道對(duì)數(shù)據(jù)文件的數(shù)據(jù)包被確認(rèn)接收的事件進(jìn)行反饋。參照?qǐng)D12,圖12為本發(fā)明數(shù)據(jù)接收裝置的工作流程圖。接收方的工作流程是這樣的:1)接收方向端口號(hào)為PORT的TCP服務(wù)端發(fā)起連接請(qǐng)求;2)成功后,確定發(fā)送方和接收方;3)接收來自服務(wù)端發(fā)送的UDP端口信息,綁定UDP于指定的端口上。4)通過TCP通道收發(fā)控制信息,UDP通道收發(fā)文件數(shù)據(jù)。此外,本發(fā)明還公開了一種數(shù)據(jù)傳輸系統(tǒng),包括上述任何一種數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置,并且,所述數(shù)據(jù)發(fā)送裝置與所述數(shù)據(jù)接收裝置相匹配。由于數(shù)據(jù)發(fā)送裝置和數(shù)據(jù)接收裝置在上面已經(jīng)進(jìn)行了詳細(xì)的說明,對(duì)應(yīng)的技術(shù)效果也做了分析,具有這兩個(gè)裝置的數(shù)據(jù)傳輸裝置也必然具有上述技術(shù)效果,在此不再贅述。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。