數據傳輸方法、設備及系統的製作方法
2023-05-25 18:12:11 1
數據傳輸方法、設備及系統的製作方法
【專利摘要】本發明公開了一種數據傳輸方法,包括:通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N≥1;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包;通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包;判斷所述返回的N個心跳包是否超時;若所述返回的N個心跳包均未超時,則向所述數據發送設備發送關閉TCP鏈路的命令;關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;通過所述UDP鏈路與所述數據發送設備進行數據傳輸。本發明還公開了另外兩種數據傳輸方法、一種數據發送設備、一種數據接收設備和一種數據傳輸系統。採用本發明實施例,能夠在保證數據高質量傳輸的基礎上,減少網絡流量和系統負載。
【專利說明】數據傳輸方法、設備及系統
【技術領域】
[0001]本發明涉及網際網路【技術領域】,尤其涉及一種數據傳輸方法、設備及系統。
【背景技術】
[0002]在現有技術中,即時通訊通常使用TCP連接方式。比如在網路遊戲中,客戶端和伺服器之間通常採用一條TCP連接進行相互通信,但是如果客戶端開了迅雷,或者客戶端同區域網的其他機器開了迅雷或者其他下載軟體,會極大影響網路遊戲的網絡流暢度。根據實際的統計數據,在網路遊戲中,使用TCP連接的情況下,客戶端的掉線率大約為30% -40%。這是因為TCP的主動避讓機制導致的。TCP主動避讓機制具體為:在網絡層發現第一次網絡異常(比如丟包)現象之後,TCP機制會主動降低自己的網絡速率。例如,如果在網絡延時為50ms的時候,TCP第一次發生丟包,系統會在下一個50ms嘗試重傳,如果仍然丟包,會在下100ms重傳,如果仍然丟包,會在下200ms重傳。嘗試的時間等於上一次嘗試時間的一倍,這是一個指數的級別,重傳次數如果超過5次,重傳等待時間將會比較長,最終很可能掉線。因此客戶端和伺服器之間採用TCP連接時,當網絡質量不穩定時(例如如果網絡質量突然很差,之後又再次恢復),TCP嘗試重傳的時間會等待很久,由於等待時間太久,會導致客戶端掉線。
[0003]某些應用或軟體會採用UDP連接方式發送數據,但是採用UDP連接方式的伺服器不會在接收到數據之後返回確認響應,因此採用UDP連接方式不可靠。另外,防火牆等某些軟體會限制UDP連接流量,因此當採用UDP連接傳輸數據較多時,會被限制流量,從而導致數據傳輸不夠流暢、掉線率增加,甚至導致數據傳輸中斷。
【發明內容】
[0004]本發明實施例提出一種數據傳輸方法、設備及系統,能夠在保證數據高質量傳輸的基礎上,減少網絡流量和系統負載。
[0005]本發明實施例提供一種數據傳輸方法,包括:
[0006]通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N ^ 1 ;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包;
[0007]通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包;
[0008]判斷所述返回的N個心跳包是否超時;
[0009]若所述返回的N個心跳包均未超時,則向所述數據發送設備發送關閉TCP鏈路的命令;
[0010]關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;
[0011 ] 通過所述UDP鏈路與所述數據發送設備進行數據傳輸。
[0012]本發明還提供了另外一種數據傳輸方法,包括:
[0013]通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;其中,N多1 ;
[0014]接收所述數據接收設備發送的關閉TCP鏈路的命令;所述關閉TCP鏈路的命令是所述數據接收設備在判定返回的N個心跳包均未超時時發送的;
[0015]關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路;
[0016]通過所述UDP鏈路與所述數據接收設備進行數據傳輸。
[0017]本發明還提供了另外一種數據傳輸方法,包括:
[0018]數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N彡1 ;
[0019]所述數據發送設備通過UDP鏈路逐一地接收所述N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;
[0020]所述數據接收設備判斷所述數據發送設備返回的N個心跳包是否超時;
[0021]若所述返回的N個心跳包均未超時,則所述數據接收設備向所述數據發送設備發送關閉TCP鏈路的命令,並關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;
[0022]所述數據發送設備接收所述數據接收設備發送的關閉TCP鏈路的命令,關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路;
[0023]所述數據發送設備與所述數據接收設備通過所述UDP鏈路進行數據傳輸。
[0024]本發明還提供了一種數據接收設備,包括:
[0025]心跳包發送模塊,用於通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N ^ 1 ;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包;
[0026]第一心跳包接收模塊,用於通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包;
[0027]超時判斷模塊,用於判斷所述返回的N個心跳包是否超時;
[0028]關閉命令發送模塊,用於在所述超時判斷模塊判定所述返回的N個心跳包均未超時時,向所述數據發送設備發送關閉TCP鏈路的命令;
[0029]第一 TCP鏈路關閉模塊,用於關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;以及,
[0030]第一數據傳輸模塊,用於通過所述UDP鏈路與所述數據發送設備進行數據傳輸。
[0031]本發明還提供了一種數據發送設備,包括:
[0032]心跳包返回模塊,用於通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;其中,N多1 ;
[0033]關閉命令接收模塊,用於接收所述數據接收設備發送的關閉TCP鏈路的命令;所述關閉TCP鏈路的命令是所述數據接收設備在判定返回的N個心跳包均未超時時發送的;
[0034]第二 TCP鏈路關閉模塊,用於關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路;以及,
[0035]第二數據傳輸模塊,用於通過所述UDP鏈路與所述數據接收設備進行數據傳輸。
[0036]本發明還提供了一種數據傳輸系統,包括數據發送設備和數據接收設備;所述數據發送設備包括心跳包接收模塊、關閉命令接收模塊和數據傳輸模塊;所述數據接收設備包括心跳包發送模塊、超時判斷模塊和關閉命令發送模塊;其中:
[0037]所述心跳包發送模塊,用於數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N彡1 ;
[0038]所述心跳包接收模塊,用於所述數據發送設備通過UDP鏈路逐一地接收所述N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;
[0039]所述超時判斷模塊,用於所述數據接收設備判斷所述數據發送設備返回的N個心跳包是否超時;
[0040]所述關閉命令發送模塊,用於在所述超時判斷模塊判定所述返回的N個心跳包均未超時時,所述數據接收設備向所述數據發送設備發送關閉TCP鏈路的命令,並關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;
[0041]所述關閉命令接收模塊,用於所述數據發送設備接收所述數據接收設備發送的關閉TCP鏈路的命令,關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路;
[0042]所述數據傳輸模塊,用於所述數據發送設備與所述數據接收設備通過所述UDP鏈路進行數據傳輸。
[0043]實施本發明實施例,具有如下有益效果:
[0044]本發明實施例提供的數據傳輸方法、設備及系統,能夠在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過m)P鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
【專利附圖】
【附圖說明】
[0045]圖1是本發明提供的數據傳輸方法的一個實施例的流程示意圖;
[0046]圖2是本發明提供的數據傳輸方法的另一個實施例的流程示意圖;
[0047]圖3是本發明提供的數據傳輸方法的又一個實施例的流程示意圖;
[0048]圖4是本發明提供的數據接收設備的一個實施例的功能模塊圖;
[0049]圖5是本發明提供的數據發送設備的一個實施例的功能模塊圖;
[0050]圖6是本發明提供的數據傳輸系統的一個實施例的功能模塊圖。
【具體實施方式】
[0051]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0052]參見圖1,是本發明提供的數據傳輸方法的一個實施例的流程示意圖,本實施例是針對於數據接收設備一側描述的,如圖1所示,本發明實施例提供的數據傳輸方法包括:
[0053]S101、通過UDP鏈路接收數據發送設備發送的第一數據封包。
[0054]其中,數據發送設備可以是客戶端,數據接收設備可以對應的是伺服器;另外,數據發送設備和數據接收設備也可以是兩個對等的終端,或者數據發送設備為伺服器,數據接收設備對應的為客戶端。
[0055]S102、從所述第一數據封包解析出所述數據發送設備的連接ID,並保存於數據發送設備信息列表中。
[0056]具體的,可以從所述第一數據封包解析出所述數據發送設備的連接ID和當前UDP鏈路的鏈路ID,並保存於數據發送設備信息列表中。其中,數據發送設備信息列表可以保存多個數據發送設備的連接ID。具體的,數據發送設備信息列表可以是哈希表,哈希表的key是數據發送設備的連接ID,value是當前UDP鏈路的鏈路ID。
[0057]S103、向所述數據發送設備返回所述第一數據封包的確認響應。
[0058]具體的,數據接收設備在接收到數據發送設備發送的數據封包後都會返回一個確認響應。
[0059]S104、接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路。
[0060]其中,所述TCP鏈路建立請求是所述數據發送設備在檢測到超過預設時長仍未接收到所述第一數據封包的確認響應時發送的。
[0061]S105、通過所述UDP鏈路和TCP鏈路接收所述數據發送設備發送的第二數據封包。
[0062]具體的,當TCP鏈路建立後,數據發送設備會通過所述UDP鏈路和TCP鏈路向數據接收設備發送相同的第二數據封包。其中,第二數據封包包含數據發送設備的連接ID。
[0063]S106、從通過TCP鏈路接收的第二數據封包中解析出所述數據發送設備的連接ID,並根據所述連接ID對所述數據發送設備進行身份驗證。
[0064]具體的,可以從通過TCP鏈路接收的第二數據封包中解析出所述數據發送設備的連接ID和當前TCP鏈路的鏈路ID,並將當前TCP鏈路的鏈路ID也保存於所述數據發送設備信息列表中,具體保存在哈希表中key為當前數據發送設備的連接ID的value中。
[0065]其中,身份驗證主要是查看當前的數據發送設備之前是否採用了 UDP連接。
[0066]其中,所述根據所述連接ID對所述數據發送設備進行身份驗證具體包括:檢測所述連接ID是否在所述數據發送設備信息列表中;若所述連接ID在所述數據發送設備信息列表中,則判定為身份驗證通過。因為,如果之前採用了 UDP連接,則會保存在數據發送設備信息列表中。
[0067]S107、若身份驗證通過,則通過所述UDP鏈路和所述TCP鏈路向所述當前數據發送設備返回所述第二數據封包的確認響應。
[0068]具體的,如果驗證通過,則表明之前採用了 UDP連接,因此針對於當前數據發送設備,從數據發送設備信息列表中查找出key為當前數據發送設備的連接ID的value,從value中查找出UDP鏈路的鏈路ID和TCP鏈路的鏈路ID,並通過對應的UDP鏈路和TCP鏈路向所述當前數據發送設備返回所述第二數據封包的確認響應。
[0069]基於S101-S107,本實施例建立了一種在UDP鏈路出現延時/掉線的情況下,觸發建立TCP鏈路同步進行數據傳送的方案,顯然,上述方案能夠提高數據傳送的穩定性,但同時雙通道數據傳送將使得數據傳輸量翻倍,增加伺服器和網絡的壓力。為降低這種壓力,需要建立恢復m)P單通道傳輸的恢復機制。
[0070]但由於通過UDP鏈路傳送數據,在常規的狀態接受段並不會返回確認響應,如何建立所述恢復機制以使得:一方面,不顯著增加數據傳輸壓力及數據收/發段的計算量?』另一方面,避免TCP鏈路的反覆創建與銷毀導致伺服器壓力大幅增加,成為一個技術難題。為此,本實施例通過下述方案進一步解決上述技術難題。
[0071]S108、通過UDP鏈路逐一地向數據發送設備發送N個心跳包,1 ;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包。
[0072]具體的,根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
[0073]數據接收設備也可以每間隔固定的時間向數據發送設備發送一個心跳包,直到連續發出N個心跳包為止。其中,數據接收設備可以每隔10s發送一個心跳包。
[0074]S109、通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包。
[0075]S110、判斷所述返回的N個心跳包是否超時。
[0076]具體的,S110包括:
[0077]從每個返回的心跳包中獲得所述心跳包的發送時間;
[0078]計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;
[0079]判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
[0080]其中,可以預設時長閾值為150ms,若數據接收設備按照心跳包發送頻率來發送心跳包,則可以設置N為30,使數據接收設備連續發出30個心跳包,並判斷該30個心跳包的延時時長是否均小於150ms ;若數據接收設備按照每隔10s的周期發送心跳包,則可以設置在連續的5分鐘內判斷接收的每個心跳包延時的時長是否均小於150ms。
[0081]S111、若所述返回的N個心跳包均未超時,則向所述數據發送設備發送關閉TCP鏈路的命令。
[0082]具體的,若連續返回的N個心跳包均未超時,則說明UDP鏈路穩定,無需通過UDP鏈路和TCP鏈路同時傳輸數據,因此,向數據發送設備發送關閉TCP鏈路的命令,使數據發送設備關閉TCP鏈路。
[0083]S112、關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路。
[0084]具體的,數據接收設備關閉TCP鏈路,並回收該鏈路傳輸的相應資源。
[0085]S113、通過所述UDP鏈路與所述數據發送設備進行數據傳輸。
[0086]具體的,在網絡穩定後,數據接收設備關閉TCP鏈路,通過UDP鏈路與數據發送設備進行數據傳輸;在網絡不穩定、UDP鏈路傳輸質量差時,數據接收設備建立TCP鏈路,通過UDP鏈路和TCP鏈路同時與數據發送設備進行數據傳輸。
[0087]本發明實施例中,在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過UDP鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
[0088]圖2是本發明提供的數據傳輸方法的另一個實施例的流程示意圖,本實施例是針對於數據發送設備一側描述的,如圖2所示,本發明實施例提供的數據傳輸方法包括:
[0089]S201、通過UDP鏈路向數據接收設備發送第一數據封包。
[0090]其中,數據發送設備可以是客戶端,數據接收設備可以對應的是伺服器;可以理解的,數據發送設備和數據接收設備也可以是兩個對等的終端,或者數據發送設備為伺服器,數據接收設備對應的為客戶端。
[0091]S202、將已發送的第一數據封包及其發送時間保存於已發送列表中。
[0092]其中,已發送列表是隊列結構,其中保存了已發送的數據封包及其發送時間,用於之後的超時檢測。
[0093]S203、若接收到所述數據接收設備返回的所述第一數據封包的確認響應,從所述已發送列表中刪除所述第一數據封包及其發送時間。
[0094]具體的,數據接收設備在接收到數據發送設備發送的數據封包後會返回一個確認響應,表示接收到該數據封包。所述第一數據封包的確認響應表示所述數據接收設備接收到所述第一數據封包。若數據發送設備接收到了確認響應後,會將對應的數據封包及其發送時間從已發送列表中刪除,因此已發送列表中保存的都是沒有接收到確認響應的數據封包。
[0095]S204、在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應。
[0096]具體的,S204包括:
[0097]在超時檢測時刻,檢測所述已發送列表是否存在所述第一數據封包;
[0098]若存在所述第一數據封包,則判斷所述第一數據封包的發送時間與當前時刻的差值是否大於預設時長;
[0099]當所述差值大於預設時長時,判定為超過預設時長仍未接收到所述確認響應。
[0100]另外,若所述發送列表不存在所述第一數據封包,或者所述差值小於或等於預設時長,則繼續通過所述UDP鏈路向所述數據接收設備發送第二數據封包。
[0101]其中,超時檢測是一個周期性的檢測,可以是每隔500ms檢測一次,對應的預設時長可以為2s。其中已發送列表中保存的都是沒有接收到確認響應的數據封包,因此,如果已發送列表沒有所述第一數據封包,即表示所述第一數據封包已經接收到第一數據封包。
[0102]S205、若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備請求並建立TCP鏈路。
[0103]具體的,檢測到超過預設時長仍未接收到所述第一數據封包的確認響應表示當前的UDP鏈路有可能被限制或出現網絡問題等,因此向所述數據接收設備請求並建立TCP鏈路。具體的,新建的TCP鏈路的連接IP和埠設定為和UDP鏈路的一樣。
[0104]步驟S204和步驟S205是針對數據發送設備發送的某一數據封包的超時檢測過程進行描述的,在實際操作過程中,如果對數據發送設備發送的每一數據封包都進行超時檢測,那麼會增加內存消耗、降低效率,因此步驟S204和步驟S205在實際操作過程中的【具體實施方式】可以是:在超時檢測時刻,遍歷已發送列表中的前幾個數據封包(例如前7個),如果存在超過預設時長沒有接收到確認響應的數據封包,則向所述數據接收設備請求並建立TCP鏈路。即只對已發送列表的前幾個數據封包進行遍歷和超時檢測。
[0105]S206、通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備發送第二數據封包。
[0106]其中,所述第二數據封包包含所述數據發送設備的連接ID,以使所述數據接收設備能夠根據所述連接ID對所述數據發送設備進行身份驗證,並在驗證通過後通過所述UDP鏈路和所述TCP鏈路向所述數據發送設備返回所述第二數據封包的確認響應。
[0107]S207、接收所述數據接收設備通過所述UDP鏈路所述和TCP鏈路返回的數據封包,並對所述數據封包進行重複數據封包判定和過濾。
[0108]具體的,當接收所述數據接收設備通過所述UDP鏈路和TCP鏈路返回的數據封包時,對接收的數據封包進行重複數據封包判定和過濾。因為數據接收設備通過所述UDP鏈路和TCP鏈路返回的數據封包是相同的數據包,因此需要對重複的數據封包進行過濾。
[0109]S208、通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;其中,N多1。
[0110]具體的,通過UDP鏈路逐一地接收所述數據接收設備根據預設的心跳包發送頻率發送的心跳包,直到接收到所述數據接收設備發出的N個心跳包為止;每個心跳包包含本心跳包的發送時間。
[0111]具體的,數據發送設備每接收一個心跳包就立即將該心跳包返回給數據接收設備。數據發送設備逐一接收數據接收設備發送的N個心跳包,則逐一向數據接收設備返回N個心跳包。
[0112]S209、接收所述數據接收設備發送的關閉TCP鏈路的命令。
[0113]其中,所述關閉TCP鏈路的命令是所述數據接收設備在判定返回的N個心跳包均未超時時發送的。
[0114]S210、關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路。
[0115]具體的,數據發送設備根據關閉TCP鏈路的命令,關閉與數據接收設備之間進行數據傳輸的TCP鏈路,並回收該鏈路傳輸的相應資源。
[0116]S211、通過所述UDP鏈路與所述數據接收設備進行數據傳輸。
[0117]具體的,在網絡穩定後,數據發送設備關閉TCP鏈路,通過UDP鏈路與數據接收設備進行數據傳輸;在網絡不穩定、UDP鏈路傳輸質量差時,數據發送設備建立TCP鏈路,通過UDP鏈路和TCP鏈路同時與數據接收設備進行數據傳輸。
[0118]本發明實施例中,在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過UDP鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
[0119]圖3是本發明提供的數據傳輸方法的又一個實施例的流程示意圖,本實施例是對於數據接收設備和數據發送設備兩側描述的,如圖3所示,本發明實施例提供的數據傳輸方法包括:
[0120]S301、數據發送設備通過UDP鏈路向數據接收設備發送第一數據封包,並將已發送的第一數據封包及其發送時間保存於已發送列表中。
[0121]其中,數據發送設備可以是客戶端,數據接收設備可以對應的是伺服器;可以理解的,數據發送設備和數據接收設備也可以是兩個對等的終端,或者數據發送設備為伺服器,數據接收設備對應的為客戶端。其中,已發送列表是隊列結構,其中保存了已發送的數據封包及其發送時間,用於之後的超時檢測。
[0122]S302、所述數據接收設備通過所述UDP鏈路接收所述數據發送設備發送的第一數據封包,並從所述第一數據封包解析出所述數據發送設備的連接ID,並保存於數據發送設備信息列表中。
[0123]具體的,可以從所述第一數據封包解析出所述數據發送設備的連接ID和當前UDP鏈路的鏈路ID,並保存於數據發送設備信息列表中。其中,數據發送設備信息列表可以保存多個數據發送設備的連接ID。具體的,數據發送設備信息列表可以是哈希表,哈希表的key是數據發送設備的連接ID,value是當前UDP鏈路的鏈路ID。
[0124]S303、所述數據接收設備向所述數據發送設備返回所述第一數據封包的確認響應。
[0125]具體的,數據接收設備在接收到數據發送設備發送的數據封包後會返回一個確認響應,表示接收到該數據封包。所述第一數據封包的確認響應表示所述數據接收設備接收到所述第一數據封包。
[0126]S304、所述數據發送設備若接收到所述數據接收設備返回的所述第一數據封包的確認響應,從所述已發送列表中刪除所述第一數據封包及其發送時間。
[0127]若數據發送設備接收到了確認響應後,會將對應的數據封包及其發送時間從已發送列表中刪除,因此已發送列表中保存的都是沒有接收到確認響應的數據封包。
[0128]S305、所述數據發送設備在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應。
[0129]具體的,S305包括:
[0130]所述數據發送設備在超時檢測時刻,檢測所述已發送列表是否存在所述第一數據封包;
[0131]若存在所述第一數據封包,則判斷所述第一數據封包的發送時間與當前時刻的差值是否大於預設時長;
[0132]當所述差值大於預設時長時,判定超過預設時長仍未接收到所述確認響應。
[0133]另外,若所述發送列表不存在所述第一數據封包,或者所述差值小於或等於預設時長,則繼續通過所述UDP鏈路向所述數據接收設備發送第二數據封包。
[0134]其中,超時檢測是一個周期性的檢測,可以是每隔500ms檢測一次,對應的預設時長可以為2s。其中已發送列表中保存的都是沒有接收到確認響應的數據封包,因此,如果已發送列表沒有所述第一數據封包,即表示所述第一數據封包已經接收到第一數據封包。
[0135]S306、所述數據發送設備若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備發送TCP鏈路建立請求。
[0136]具體的,檢測到超過預設時長仍未接收到所述第一數據封包的確認響應表示當前的UDP鏈路有可能被限制或出現網絡問題等,因此向所述數據接收設備請求並建立TCP鏈路。具體的,新建的TCP鏈路的連接IP和埠設定為和UDP鏈路的一樣。
[0137]步驟S305和步驟S306是針對數據發送設備發送的某一數據封包的超時檢測過程進行描述的,在實際操作過程中,如果對數據發送設備發送的每一數據封包都進行超時檢測,那麼會增加內存消耗、降低效率,因此步驟S305和步驟S306在實際操作過程中的【具體實施方式】可以是:在超時檢測時刻,遍歷已發送列表中的前幾個數據封包(例如前7個),如果存在超過預設時長沒有接收到確認響應的數據封包,則向所述數據接收設備請求並建立TCP鏈路。即只對已發送列表的前幾個數據封包進行遍歷和超時檢測。
[0138]S307、所述數據接收設備接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路。
[0139]S308、所述數據發送設備通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備發送第二數據封包。
[0140]其中,所述第二數據封包包含所述數據發送設備的連接ID,以使所述數據接收設備能夠根據所述連接ID對所述數據發送設備進行身份驗證,並在驗證通過後通過所述UDP鏈路和TCP鏈路向所述數據發送設備返回所述第二數據封包的確認響應。
[0141]S309、所述數據接收設備通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備發送的第二數據封包,並對所述第二數據封包進行重複數據封包判定和過濾。
[0142]S310、所述數據接收設備從通過TCP鏈路接收的第二數據封包中解析出所述數據發送設備的連接ID,並根據所述連接ID對所述數據發送設備進行身份驗證。
[0143]具體的,可以從通過TCP鏈路接收的第二數據封包中解析出所述數據發送設備的連接ID和當前TCP鏈路的鏈路ID,並將當前TCP鏈路的鏈路ID也保存於所述數據發送設備信息列表中,具體保存在哈希表中key為當前數據發送設備的連接ID的value中。
[0144]其中,身份驗證主要是查看當前的數據發送設備是否之前採用了 UDP連接。
[0145]其中,所述根據所述連接ID對所述數據發送設備進行身份驗證具體包括:檢測所述連接ID是否在所述數據發送設備信息列表中;若所述連接ID在所述數據發送設備信息列表中,判定為身份驗證通過。因為,如果之前採用了 UDP連接,則會保存在數據發送設備信息列表中。
[0146]S311、若身份驗證通過,則所述數據接收設備通過所述UDP鏈路和TCP鏈路向所述當前數據發送設備返回所述第二數據封包的確認響應。
[0147]具體的,如果驗證通過,則表明之前採用了 UDP連接,因此針對於當前數據發送設備,從數據發送設備信息列表中查找出key為當前數據發送設備的連接ID的value,從value中查找出UDP鏈路的鏈路ID和TCP鏈路的鏈路ID,並通過對應的UDP鏈路和TCP鏈路向所述當前數據發送設備返回所述第二數據封包的確認響應。
[0148]S312、所述數據發送設備接收所述數據接收設備通過所述UDP鏈路和所述TCP鏈路返回的數據封包,並所述數據封包進行重複數據封包判定和過濾。
[0149]具體的,當接收所述數據接收設備通過所述UDP鏈路和TCP鏈路返回的數據封包時,對接收的數據封包進行重複數據封包判定和過濾。因為數據接收設備通過所述UDP鏈路和TCP鏈路返回的數據封包是相同的數據包,因此需要對重複的數據封包進行過濾。
[0150]S313、數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包,1。
[0151]具體的,根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
[0152]數據接收設備也可以每間隔固定的時間向數據發送設備發送一個心跳包,直到連續發出N個心跳包為止。其中,數據接收設備可以每隔10s發送一個心跳包。
[0153]S314、所述數據發送設備通過UDP鏈路逐一地接收所述N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包。
[0154]具體的,數據發送設備每接收一個心跳包就立即將該心跳包返回給數據接收設備。因此,數據發送設備逐一接收數據接收設備發送的N個心跳包,則逐一向數據接收設備返回N個心跳包。
[0155]S315、所述數據接收設備判斷所述數據發送設備返回的N個心跳包是否超時。
[0156]具體的,S315包括:
[0157]從每個返回的心跳包中獲得所述心跳包的發送時間;
[0158]計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;
[0159]判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
[0160]其中,可以預設時長閾值為150ms,若數據接收設備按照心跳包發送頻率來發送心跳包,則可以設置N為30,使數據接收設備連續發出30個心跳包,並判斷該30個心跳包的延時時長是否均小於150ms ;若數據接收設備按照每隔10s的周期發送心跳包,則可以設置在連續的5分鐘內判斷接收的每個心跳包延時的時長是否均小於150ms。
[0161]S316、若所述返回的N個心跳包均未超時,則所述數據接收設備向所述數據發送設備發送關閉TCP鏈路的命令,並關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路。
[0162]具體的,若連續返回的N個心跳包均未超時,則說明UDP鏈路穩定,無需通過UDP鏈路和TCP鏈路同時傳輸數據,因此,向數據發送設備發送關閉TCP鏈路的命令,使數據發送設備關閉TCP鏈路。同時,數據接收設備關閉TCP鏈路,並回收該鏈路傳輸時的相應資源。
[0163]S317、所述數據發送設備接收所述數據接收設備發送的關閉TCP鏈路的命令,關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路。
[0164]具體的,數據發送設備根據關閉TCP鏈路的命令,關閉與數據接收設備之間進行數據傳輸的TCP鏈路,並回收該鏈路傳輸的相應資源。
[0165]S318、所述數據發送設備與所述數據接收設備通過所述UDP鏈路進行數據傳輸。
[0166]具體的,在網絡穩定後,數據發送設備和數據接收設備關閉TCP鏈路,使數據通過UDP鏈路進行傳輸;在網絡不穩定、UDP鏈路傳輸質量差時,數據發送設備和數據接收設備之間建立TCP鏈路,使數據通過UDP鏈路和TCP鏈路同時進行傳輸。
[0167]本發明實施例中,在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過UDP鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
[0168]圖4是本發明提供的數據接收設備的一個實施例的功能模塊圖,如圖4所示,本發明實施例提供的數據接收設備包括:
[0169]第一數據封包接收模塊401,用於通過UDP鏈路接收數據發送設備發送的第一數據封包;
[0170]第一數據封包解析模塊402,用於從所述第一數據封包接收模塊接收的第一數據封包中解析出所述數據發送設備的連接ID,並保存於數據發送設備信息列表中;
[0171]第一確認響應返回模塊403,用於向所述數據發送設備返回所述第一數據封包的確認響應;
[0172]TCP鏈路建立模塊404,用於接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路;所述TCP鏈路建立請求是所述數據發送設備在檢測到超過預設時長仍未接收到所述第一數據封包的確認響應時發送的;
[0173]第二數據封包接收模塊405,用於通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備發送的第二數據封包,並對所述第二數據封包進行重複數據封包判定和過濾。
[0174]身份驗證模塊406,用於從通過所述TCP鏈路接收的第二數據封包中解析出所述數據發送設備的連接ID,並根據所述連接ID對所述數據發送設備進行身份驗證;
[0175]第二確認響應返回模塊407,用於在所述身份驗證模塊判定為身份驗證通過時,通過所述UDP鏈路和所述TCP鏈路向所述當前數據發送設備返回所述第二數據封包的確認響應;
[0176]心跳包發送模塊408,用於通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N ^ 1 ;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包;
[0177]第一心跳包接收模塊409,用於通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包;
[0178]超時判斷模塊410,用於判斷所述返回的N個心跳包是否超時;
[0179]關閉命令發送模塊411,用於在所述超時判斷模塊判定所述返回的N個心跳包均未超時時,向所述數據發送設備發送關閉TCP鏈路的命令;
[0180]第一 TCP鏈路關閉模塊412,用於關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;以及,
[0181]第一數據傳輸模塊413,用於通過所述UDP鏈路與所述數據發送設備進行數據傳輸。
[0182]其中,身份驗證模塊406具體包括:
[0183]ID檢測單元,用於檢測從所述第二數據封包中解析出連接ID是否在所述數據發送設備信息列表中;
[0184]驗證判定單元,用於若所述連接ID在所述數據發送設備信息列表中,則判定為身份驗證通過。
[0185]其中,所述心跳包發送模塊408具體用於根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
[0186]其中,所述超時判斷模塊410具體包括:
[0187]發送時間獲取單元,用於從每個返回的心跳包中獲得所述心跳包的發送時間;
[0188]延時時長獲取單元,用於計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;以及,
[0189]延時時長判斷單元,用於判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
[0190]本發明實施例與本發明提供的如圖1所示的數據傳輸方法的實施例一一對應,因此,各模塊的具體信息請參照本發明提供的數據傳輸方法的第一實施例,在此不再贅述。
[0191]本發明實施例提供的數據傳輸方法、設備及系統,能夠在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過m)P鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
[0192]圖5是本發明提供的數據發送設備的一個實施例的功能模塊圖,如圖5所示,本發明實施例提供的數據發送設備包括:
[0193]第一數據封包發送模塊501,用於通過UDP鏈路向數據接收設備發送第一數據封包;
[0194]數據保存模塊502,用於將所述第一數據封包發送模塊501發送的第一數據封包及其發送時間保存於已發送列表中;
[0195]數據刪除模塊503,用於當接收到所述數據接收設備返回的的所述第一數據封包的確認響應時,從所述已發送列表中刪除所述第一數據封包及其發送時間;
[0196]超時檢測模塊504,用於在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應;所述第一數據封包的確認響應表示所述數據接收設備接收到所述第一數據封包;
[0197]TCP鏈路請求建立模塊505,用於若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備請求並建立TCP鏈路;
[0198]第二數據封包發送模塊506,用於通過所述UDP鏈路和TCP鏈路向所述數據接收設備發送第二數據封包;
[0199]重複數據過濾模塊507,用於接收所述數據接收設備通過所述UDP鏈路和TCP鏈路返回的數據封包,並對接收的數據封包進行重複數據封包判定和過濾;
[0200]第二心跳包接收模塊508,用於通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;其中,N^l;
[0201]關閉命令接收模塊509,用於接收所述數據接收設備發送的關閉TCP鏈路的命令;所述關閉TCP鏈路的命令是所述數據接收設備在判定返回的N個心跳包均未超時時發送的;
[0202]第二 TCP鏈路關閉模塊510,用於關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路;以及,
[0203]第二數據傳輸模塊511,用於通過所述UDP鏈路與所述數據接收設備進行數據傳輸。
[0204]其中,所述超時檢測模塊504具體包括:
[0205]已發送列表檢測單元,用於在超時檢測時刻,檢測所述已發送列表是否存在所述第一數據封包;
[0206]超時計算單元,用於若存在所述第一數據封包,則判斷所述第一數據封包的發送時間與當前時刻的差值是否大於預設時長;
[0207]超時判定單元,用於當所述差值大於預設時長時,判定超過預設時長仍未接收到所述確認響應。
[0208]其中,所述第二數據封包包含所述數據發送設備的連接ID,以使所述數據接收設備能夠根據所述連接ID對所述數據發送設備進行身份驗證,並在驗證通過後通過所述UDP鏈路和所述TCP鏈路向所述數據發送設備返回所述第二數據封包的確認響應。
[0209]其中,所述第二心跳包接收模塊508具體用於通過UDP鏈路逐一地接收所述數據接收設備根據預設的心跳包發送頻率發送的心跳包,直到接收到所述數據接收設備發出的N個心跳包為止;每個心跳包包含本心跳包的發送時間。
[0210]本發明實施例與本發明提供的如圖2所示的數據傳輸方法的實施例一一對應,因此,各模塊的具體信息請參照本發明提供的數據傳輸方法的第二實施例,在此不再贅述。
[0211]本發明實施例中,在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過UDP鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
[0212]圖6是本發明提供的數據傳輸系統的一個實施例的功能模塊圖,如圖6所示,本發明實施例提供的數據傳輸系統包括數據發送設備61和數據接收設備63,所述數據發送設備61包括第一數據封包發送模塊611、數據保存模塊612、數據刪除模塊613、超時檢測模塊614、TCP鏈路請求建立模塊615、第二數據封包模塊616、重複數據過濾模塊617、心跳包返回模塊618、關閉命令接收模塊619和數據傳輸模塊620,所述數據接收設備63包括第一數據封包接收模塊631、第一數據封包解析模塊632、第一確認響應返回模塊633、TCP鏈路建立模塊634、第二數據封包接收模塊635、身份驗證模塊636、第二確認響應返回模塊637、心跳包發送模塊638、超時判斷模塊639和關閉命令發送模塊640。
[0213]第一數據封包發送模塊611,用於數據發送設備61通過UDP鏈路向數據接收設備63發送第一數據封包。
[0214]數據保存模塊612,用於將所述第一數據封包發送模塊發送的第一數據封包及其發送時間保存於已發送列表中。
[0215]數據刪除模塊613,用於當接收到所述數據接收設備63返回的所述第一數據封包的確認響應時,從所述已發送列表中刪除所述第一數據封包及其發送時間。
[0216]第一數據封包接收模塊631,用於所述數據接收設備63通過所述UDP鏈路接收所述數據發送設備61發送的第一數據封包。
[0217]第一數據封包解析模塊632,用於從所述第一數據封包接收模塊接收的第一數據封包中解析出所述數據發送設備61的連接ID和所述第一 UDP鏈路的鏈路ID,並保存於鏈路ID表中。
[0218]第一確認響應返回模塊633,用於所述數據接收設備63向所述數據發送設備61返回所述第一數據封包的確認響應。
[0219]超時檢測模塊614,用於所述數據發送設備61在超時檢測時刻,檢測是否接收到所述數據接收設備63返回的所述第一數據封包的確認響應。
[0220]TCP鏈路請求建立模塊615,用於所述數據發送設備61若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備63發送TCP鏈路建立請求。
[0221]TCP鏈路建立模塊634,用於所述數據接收設備63接收所述數據發送設備61發送的TCP鏈路建立請求,並與所述數據發送設備61建立TCP鏈路。
[0222]第二數據封包發送模塊616,用於所述數據發送設備61通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備63發送第二數據封包。
[0223]第二數據封包接收模塊635,用於所述數據接收設備63通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備61發送的第二數據封包。
[0224]身份驗證模塊636,用於從通過所述TCP鏈路接收的第二數據封包中解析出所述數據發送設備61的連接ID,並根據所述連接ID對所述數據發送設備61進行身份驗證。
[0225]第二確認響應返回模塊637,用於在所述身份驗證模塊判定為身份驗證通過時,通過所述UDP鏈路和TCP鏈路向所述當前數據發送設備61返回所述第二數據封包的確認響應。
[0226]重複數據過濾模塊617,用於數據發送設備61接收所述數據接收設備63通過所述UDP鏈路和所述TCP鏈路返回的數據封包,並對所述數據封包進行重複數據封包判定和過濾。
[0227]所述心跳包發送模塊638,用於數據接收設備63通過UDP鏈路逐一地向數據發送設備61發送N個心跳包,N彡I。
[0228]所述心跳包返回模塊618,用於所述數據發送設備61通過UDP鏈路逐一地接收所述N個心跳包,且每接收一個心跳包就立即向所述數據接收設備63返回所述心跳包。
[0229]所述超時判斷模塊639,用於所述數據接收設備63判斷所述數據發送設備61返回的N個心跳包是否超時。
[0230]所述關閉命令發送模塊640,用於在所述超時判斷模塊639判定所述返回的N個心跳包均未超時時,所述數據接收設備63向所述數據發送設備61發送關閉TCP鏈路的命令,並關閉與所述數據發送設備61之間進行數據傳輸的TCP鏈路。
[0231]所述關閉命令接收模塊619,用於所述數據發送設備61接收所述數據接收設備63發送的關閉TCP鏈路的命令,關閉與所述數據接收設備63之間進行數據傳輸的TCP鏈路。
[0232]所述數據傳輸模塊620,用於所述數據發送設備61與所述數據接收設備63通過所述UDP鏈路進行數據傳輸。
[0233]其中,超時檢測模塊614具體包括:
[0234]已發送列表檢測單元,用於在超時檢測時刻,檢測所述已發送列表是否存在所述第一數據封包;
[0235]超時計算單元,用於若存在所述第一數據封包,判斷所述第一數據封包的發送時間與當前時刻的差值是否大於預設時長;以及,
[0236]超時判定單元,用於當所述差值大於預設時長時,判定超過預設時長仍未接收到所述確認響應。
[0237]其中,身份驗證模塊636具體包括:
[0238]ID檢測單元,用於檢測從所述第二數據封包中解析出連接ID是否在所述數據發送設備信息列表中;以及,
[0239]驗證判定單元,用於若所述連接ID在所述數據發送設備信息列表中,則判定為身份驗證通過。
[0240]其中,所述心跳包發送模塊638具體用於數據接收設備63根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備61發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
[0241]其中,所述超時判斷模塊639具體包括:
[0242]發送時間獲取單元,用於從每個返回的心跳包中獲得所述心跳包的發送時間;
[0243]延時時長獲取單元,用於計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;以及,
[0244]延時時長判斷單元,用於判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
[0245]本發明實施例與本發明提供的圖3所示的數據傳輸方法的實施例一一對應,因此,各模塊的具體信息請參照本發明提供的數據傳輸方法的第三實施例,在此不再贅述。
[0246]本發明實施例中,在數據通過TCP鏈路和UDP鏈路同時進行傳輸時,通過在數據發送設備和數據接收設備之間發送心跳包來判斷網絡是否穩定,若連續發送的N個心跳包在返回時均未超時,則網絡穩定,關閉TCP鏈路,使之後的數據通過UDP鏈路傳輸,從而在保證數據高質量傳輸的基礎上,減少因TCP鏈路和UDP鏈路同時傳輸所產生的網絡流量和系統負載;在數據通過UDP鏈路進行傳輸時,通過檢測數據接收設備返回的確認響應是否超時來判斷網絡的穩定性,當數據發送設備檢測到接收確認響應超時的時候,則網絡不穩定,建立TCP鏈路,進行輔助傳輸,使之後的數據通過TCP鏈路和UDP鏈路同時進行傳輸,從而可以有效解決防火牆等某些限制UDP數據流量的應用導致的掉線、數據傳輸不流暢或中斷的問題,可以增加網絡流暢度、降低掉線率、優化數據傳輸質量。
[0247]需要說明的是,在本文中,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
[0248]上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
[0249]在本申請所提供的幾個實施例中,應該理解到,所揭露的系統和方法可以通過其它的方式實現。例如,以上所描述的系統實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0250]專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能宄竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
[0251]結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬體、處理器執行的軟體模塊,或者二者的結合來實施。軟體模塊可以置於隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬碟、可移動磁碟、CD-ROM、或【技術領域】內所公知的任意其它形式的存儲介質中。
[0252]對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或範圍的情況下,在其它實施例中實現。因此,本發明將不會被限制於本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的範圍。
【權利要求】
1.一種數據傳輸方法,其特徵在於,包括: 通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N ^ I ;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包; 通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包; 判斷所述返回的N個心跳包是否超時; 若所述返回的N個心跳包均未超時,則向所述數據發送設備發送關閉TCP鏈路的命令; 關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路; 通過所述UDP鏈路與所述數據發送設備進行數據傳輸。
2.如權利要求1所述的數據傳輸方法,其特徵在於,所述通過UDP鏈路逐一地向數據發送設備發送N個心跳包,具體包括: 根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
3.如權利要求2所述的數據傳輸方法,其特徵在於,所述判斷所述返回的N個心跳包是否超時,具體包括: 從每個返回的心跳包中獲得所述心跳包的發送時間; 計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
4.如權利要求1至3任一項所述的數據傳輸方法,其特徵在於,在所述通過UDP鏈路逐一地向數據發送設備發送N個心跳包之前,還包括: 通過UDP鏈路接收數據發送設備發送的第一數據封包; 向所述數據發送設備返回所述第一數據封包的確認響應; 接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路;所述TCP鏈路建立請求是所述數據發送設備在檢測到超過預設時長仍未接收到所述第一數據封包的確認響應時發送的; 通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備發送的第二數據封包,並對所述第二數據封包進行重複數據封包判定和過濾。
5.一種數據傳輸方法,其特徵在於,包括: 通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;其中,N多I ; 接收所述數據接收設備發送的關閉TCP鏈路的命令;所述關閉TCP鏈路的命令是所述數據接收設備在判定返回的N個心跳包均未超時時發送的; 關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路; 通過所述UDP鏈路與所述數據接收設備進行數據傳輸。
6.如權利要求5所述的數據傳輸方法,其特徵在於,所述通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,具體包括: 通過UDP鏈路逐一地接收所述數據接收設備根據預設的心跳包發送頻率發送的心跳包,直到接收到所述數據接收設備發出的N個心跳包為止;每個心跳包包含本心跳包的發送時間。
7.如權利要求5或6所述的數據傳輸方法,其特徵在於,在所述通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包之前,還包括: 通過UDP鏈路向數據接收設備發送第一數據封包; 在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應;所述第一數據封包的確認響應表示所述數據接收設備接收到所述第一數據封包;若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備請求並建立TCP鏈路; 通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備發送第二數據封包。
8.一種數據傳輸方法,其特徵在於,包括: 數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N彡I ; 所述數據發送設備通過UDP鏈路逐一地接收所述N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包; 所述數據接收設備判斷所述數據發送設備返回的N個心跳包是否超時; 若所述返回的N個心跳包均未超時,則所述數據接收設備向所述數據發送設備發送關閉TCP鏈路的命令,並關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路; 所述數據發送設備接收所述數據接收設備發送的關閉TCP鏈路的命令,關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路; 所述數據發送設備與所述數據接收設備通過所述UDP鏈路進行數據傳輸。
9.如權利要求8所述的數據傳輸方法,其特徵在於,所述數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包,具體包括: 根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
10.如權利要求9所述的數據傳輸方法,其特徵在於,所述數據接收設備判斷所述數據發送設備返回的N個心跳包是否超時,具體包括: 從每個返回的心跳包中獲得所述心跳包的發送時間; 計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
11.如權利要求8至10任一項所述的數據傳輸方法,其特徵在於,在所述數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包之前,還包括: 所述數據發送設備通過UDP鏈路向數據接收設備發送第一數據封包; 所述數據接收設備通過所述UDP鏈路接收所述數據發送設備發送的第一數據封包; 所述數據接收設備向所述數據發送設備返回所述第一數據封包的確認響應; 所述數據發送設備在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應; 所述數據發送設備若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備發送TCP鏈路建立請求; 所述數據接收設備接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路; 所述數據發送設備通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備發送第二數據封包。 所述數據接收設備通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備發送的第二數據封包,並對所述第二數據封包進行重複數據封包判定和過濾。
12.一種數據接收設備,其特徵在於,包括: 心跳包發送模塊,用於通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N多I ;所述數據發送設備每接收到一個心跳包就立即返回所述心跳包; 第一心跳包接收模塊,用於通過所述UDP鏈路逐一地接收所述數據發送設備返回的N個心跳包; 超時判斷模塊,用於判斷所述返回的N個心跳包是否超時; 關閉命令發送模塊,用於在所述超時判斷模塊判定所述返回的N個心跳包均未超時時,向所述數據發送設備發送關閉TCP鏈路的命令; 第一 TCP鏈路關閉模塊,用於關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路;以及, 第一數據傳輸模塊,用於通過所述UDP鏈路與所述數據發送設備進行數據傳輸。
13.如權利要求12所述的數據接收設備,其特徵在於,所述心跳包發送模塊具體用於根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
14.如權利要求13所述的數據接收設備,其特徵在於,所述超時判斷模塊具體包括: 發送時間獲取單元,用於從每個返回的心跳包中獲得所述心跳包的發送時間; 延時時長獲取單元,用於計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;以及, 延時時長判斷單元,用於判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
15.如權利要求12至14任一項所述的數據接收設備,其特徵在於,所述數據接收設備還包括: 第一數據封包接收模塊,用於通過UDP鏈路接收數據發送設備發送的第一數據封包; 第一確認響應返回模塊,用於向所述數據發送設備返回所述第一數據封包的確認響應; TCP鏈路建立模塊,用於接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路;所述TCP鏈路建立請求是所述數據發送設備在檢測到超過預設時長仍未接收到所述第一數據封包的確認響應時發送的;以及, 第二數據封包接收模塊,用於通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備發送的第二數據封包,並對所述第二數據封包進行重複數據封包判定和過濾。
16.一種數據發送設備,其特徵在於,包括: 第二心跳包接收模塊,用於通過UDP鏈路逐一地接收數據接收設備發送的N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包;其中,N多I ; 關閉命令接收模塊,用於接收所述數據接收設備發送的關閉TCP鏈路的命令;所述關閉TCP鏈路的命令是所述數據接收設備在判定返回的N個心跳包均未超時時發送的; 第二 TCP鏈路關閉模塊,用於關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路;以及,第二數據傳輸模塊,用於通過所述UDP鏈路與所述數據接收設備進行數據傳輸。
17.如權利要求16所述的數據發送設備,其特徵在於,所述第二心跳包接收模塊具體用於通過UDP鏈路逐一地接收所述數據接收設備根據預設的心跳包發送頻率發送的心跳包,直到接收到所述數據接收設備發出的N個心跳包為止;每個心跳包包含本心跳包的發送時間。
18.如權利要求16或17所述的數據發送設備,其特徵在於,所述數據發送設備還包括: 第一數據封包發送模塊,用於通過UDP鏈路向數據接收設備發送第一數據封包;超時檢測模塊,用於在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應;所述第一數據封包的確認響應表示所述數據接收設備接收到所述第一數據封包; TCP鏈路請求建立模塊,用於若檢測到超過預設時長仍未接收到所述確認響應,則向所述數據接收設備請求並建立TCP鏈路;以及, 第二數據封包發送模塊,用於通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備發送第二數據封包。
19.一種數據傳輸系統,其特徵在於,包括數據發送設備和數據接收設備;所述數據發送設備包括心跳包返回模塊、關閉命令接收模塊和數據傳輸模塊;所述數據接收設備包括心跳包發送模塊、超時判斷模塊和關閉命令發送模塊;其中: 所述心跳包發送模塊,用於數據接收設備通過UDP鏈路逐一地向數據發送設備發送N個心跳包,N彡I ; 所述心跳包返回模塊,用於所述數據發送設備通過UDP鏈路逐一地接收所述N個心跳包,且每接收一個心跳包就立即向所述數據接收設備返回所述心跳包; 所述超時判斷模塊,用於所述數據接收設備判斷所述數據發送設備返回的N個心跳包是否超時; 所述關閉命令發送模塊,用於在所述超時判斷模塊判定所述返回的N個心跳包均未超時時,所述數據接收設備向所述數據發送設備發送關閉TCP鏈路的命令,並關閉與所述數據發送設備之間進行數據傳輸的TCP鏈路; 所述關閉命令接收模塊,用於所述數據發送設備接收所述數據接收設備發送的關閉TCP鏈路的命令,關閉與所述數據接收設備之間進行數據傳輸的TCP鏈路; 所述數據傳輸模塊,用於所述數據發送設備與所述數據接收設備通過所述UDP鏈路進行數據傳輸。
20.如權利要求19所述的數據傳輸系統,其特徵在於,所述心跳包發送模塊具體用於數據接收設備根據預設的心跳包發送頻率,通過UDP鏈路逐一地向所述數據發送設備發送心跳包,直到發出N個心跳包為止;每個心跳包包含本心跳包的發送時間。
21.如權利要求20所述的數據傳輸系統,其特徵在於,所述超時判斷模塊具體包括: 發送時間獲取單元,用於從每個返回的心跳包中獲得所述心跳包的發送時間; 延時時長獲取單元,用於計算每個返回的心跳包的發送時間與當前時間的差值,獲得每個心跳包延時的時長;以及, 延時時長判斷單元,用於判斷每個心跳包延時的時長是否均小於預設的時長閾值,若是,則確定所述返回的N個心跳包未超時;若否,則確定所述返回的N個心跳包超時。
22.如權利要求19至21任一項所述的數據傳輸系統,其特徵在於,所述數據發送設備還包括第一數據封包發送模塊、超時檢測模塊、TCP鏈路請求建立模塊和第二數據封包模塊;所述數據接收設備還包括第一數據封包接收模塊、第一確認響應返回模塊、TCP鏈路建立模塊和第二數據封包接收模塊;其中: 所述第一數據封包發送模塊,用於數據發送設備通過UDP鏈路向數據接收設備發送第一數據封包; 所述第一數據封包接收模塊,用於所述數據接收設備通過所述UDP鏈路接收所述數據發送設備發送的第一數據封包; 所述第一確認響應返回模塊,用於所述數據接收設備向所述數據發送設備返回所述第一數據封包的確認響應; 所述超時檢測模塊,用於所述數據發送設備在超時檢測時刻,檢測是否接收到所述數據接收設備返回的所述第一數據封包的確認響應; 所述TCP鏈路請求建立模塊,用於所述數據發送設備若檢測到超過預設時長仍未接收到所述確認響應時,向所述數據接收設備發送TCP鏈路建立請求; 所述TCP鏈路建立模塊,用於所述數據接收設備接收所述數據發送設備發送的TCP鏈路建立請求,並與所述數據發送設備建立TCP鏈路; 所述第二數據封包發送模塊,用於所述數據發送設備通過所述UDP鏈路和所述TCP鏈路向所述數據接收設備發送第二數據封包; 所述第二數據封包接收模塊,用於所述數據接收設備通過所述UDP鏈路和所述TCP鏈路接收所述數據發送設備發送的第二數據封包,並對所述第二數據封包進行重複數據封包判定和過濾。
【文檔編號】H04L29/06GK104486243SQ201410706795
【公開日】2015年4月1日 申請日期:2014年11月27日 優先權日:2014年11月27日
【發明者】徐星 申請人:網易(杭州)網絡有限公司