專利名稱:一種數(shù)據(jù)傳輸方法和裝置及數(shù)據(jù)發(fā)送、接收方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)傳輸方法和裝置及數(shù)據(jù)發(fā)送、接收方法和裝置。
背景技術(shù):
現(xiàn)有技術(shù)中為了保證數(shù)據(jù)傳輸?shù)目煽啃?,是以犧牲性能為代價的?,F(xiàn)有技術(shù)中,實現(xiàn)分布式事務(wù)的關(guān)鍵就是兩階段提交協(xié)議。在此協(xié)議中,一個或多個資源管理器的活動均由一個稱為事務(wù)協(xié)調(diào)器的單獨軟件組件來控制。此協(xié)議中的五個步驟如下1、應(yīng)用程序調(diào)用事務(wù)協(xié)調(diào)器中的提交方法;2、第一階段事務(wù)協(xié)調(diào)器將聯(lián)絡(luò)事務(wù)中涉及的每個資源管理器,并通知它們準備提交事務(wù);3、為了以肯定的方式響應(yīng)準備階段,資源管理器必須將自己置于以下狀態(tài)確保能在被要求提交事務(wù)時提交事務(wù),或在被要求回滾事務(wù)時回滾事務(wù);大多數(shù)資源管理器會將包含其計劃更改的日記文件(或等效文件)寫入持久存儲區(qū)中;如果資源管理器無法準備事務(wù),它會以一個否定響應(yīng)來回應(yīng)事務(wù)協(xié)調(diào)器;4、事務(wù)協(xié)調(diào)器收集來自資源管理器的所有響應(yīng);5、第二階段,事務(wù)協(xié)調(diào)器將事務(wù)的結(jié)果通知給每個資源管理器;如果任一資源管理器做出否定響應(yīng),則事務(wù)協(xié)調(diào)器會將一個回滾命令發(fā)送給事務(wù)中涉及的所有資源管理器;如果資源管理器都做出肯定響應(yīng),則事務(wù)協(xié)調(diào)器會指示所有的資源管理器提交事務(wù); 一旦通知資源管理器提交,此后的事務(wù)就不能失敗了 ;通過以肯定的方式響應(yīng)第一階段,每個資源管理器均已確保,如果以后通知它提交事務(wù),則事務(wù)不會失敗。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題如利用事務(wù)的兩階段提交,需要大量的事務(wù)日志,由于涉及到兩個節(jié)點,還需要一個全局事務(wù)協(xié)調(diào)器。同時,這種實現(xiàn)方式比較復(fù)雜。如果消息持久化源不支持事務(wù),那么需要自己實現(xiàn)事務(wù)協(xié)調(diào)器、表決器、提交及回滾的大量代碼。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中在數(shù)據(jù)傳輸方式存在的為了提高數(shù)據(jù)的可靠性導(dǎo)致傳輸效率低的問題,本發(fā)明實施例提供了一種數(shù)據(jù)傳輸方法和裝置及數(shù)據(jù)發(fā)送、接收方法和裝置。 所述技術(shù)方案如下本發(fā)明實施例提出了一種數(shù)據(jù)傳輸方法,包括向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);向接收端發(fā)送確認消息直到接收端確認收到;當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。
作為上述技術(shù)方案的優(yōu)選,所述方法具體為101、發(fā)送端讀取數(shù)據(jù)的狀態(tài)標識,如果所述數(shù)據(jù)被標識為未發(fā)送,則進入步驟 102 ;如果所述數(shù)據(jù)被標識為已發(fā)送,則進入步驟103 ;如果所述數(shù)據(jù)被標識為已確認,則將該數(shù)據(jù)刪除,步驟結(jié)束;102、發(fā)送端發(fā)送數(shù)據(jù);如果接收端未接收到該數(shù)據(jù),則返回步驟101 ;否則將所述數(shù)據(jù)標識為發(fā)送;接收端使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);103、發(fā)送端發(fā)送確認消息;如果接收端未接收到該確認消息,則返回步驟101 ;否則將所述數(shù)據(jù)標識為已確認;接收端使所述數(shù)據(jù)可用。本發(fā)明實施例提出了一種數(shù)據(jù)傳輸裝置,包括發(fā)送端和接收端,所述發(fā)送端包括發(fā)送模塊,用于向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;并用于向接收端發(fā)送確認消息直到接收端確認收到。所述接收端包括接收模塊,用于接收所述發(fā)送端發(fā)送的數(shù)據(jù)和確認消息;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。作為上述技術(shù)方案的優(yōu)選,所述發(fā)送端包括狀態(tài)判斷模塊,用于讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,將所述數(shù)據(jù)發(fā)送到數(shù)據(jù)發(fā)送模塊;如果數(shù)據(jù)被標識為已發(fā)送,則激活確認消息發(fā)送模塊;如果數(shù)據(jù)被標識為已確認,則刪除所述數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,用于將數(shù)據(jù)發(fā)送到接收端;當接收端接收到所述數(shù)據(jù)后,將所述數(shù)據(jù)標識為已發(fā)送;確認消息發(fā)送模塊,用于將與所述數(shù)據(jù)對應(yīng)的確認消息發(fā)送到接收端;當接收端接收到所述確認消息后,將所述數(shù)據(jù)標識為已確認;所述接收端包括數(shù)據(jù)接收模塊,用于接收發(fā)送端發(fā)送的數(shù)據(jù),當接收到該數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);確認消息接收模塊,用于接收發(fā)送端發(fā)送的確認消息,當接收到該確認消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例提出了一種數(shù)據(jù)發(fā)送方法,包括向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;向接收端發(fā)送確認消息直到接收端確認收到。作為上述技術(shù)方案的優(yōu)選,所述方法具體為201、發(fā)送端讀取數(shù)據(jù)的狀態(tài)標識,如果所述數(shù)據(jù)被標識為未發(fā)送,則進入步驟 202 ;如果所述數(shù)據(jù)被標識為已發(fā)送,則進入步驟203 ;如果所述數(shù)據(jù)被標識為已確認,則將該數(shù)據(jù)刪除,步驟結(jié)束;202、發(fā)送端發(fā)送數(shù)據(jù);如果接收端未接收到該數(shù)據(jù),則返回步驟201 ;否則將所述數(shù)據(jù)標識為發(fā)送;
203、發(fā)送端發(fā)送確認消息;如果接收端未接收到該確認消息,則返回步驟201 ;否則將所述數(shù)據(jù)標識為已確認。本發(fā)明實施例提出了一種數(shù)據(jù)發(fā)送裝置,包括發(fā)送模塊,用于向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;并用于向接收端發(fā)送確認消息直到接收端確認收到。作為上述技術(shù)方案的優(yōu)選,所述發(fā)送模塊包括狀態(tài)判斷模塊,用于讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,將所述數(shù)據(jù)發(fā)送到數(shù)據(jù)發(fā)送模塊;如果數(shù)據(jù)被標識為已發(fā)送,則激活確認消息發(fā)送模塊;如果數(shù)據(jù)被標識為已確認,則刪除所述數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,用于將數(shù)據(jù)發(fā)送到接收端;當確認接收端接收到所述數(shù)據(jù)后,將所述數(shù)據(jù)標識為已發(fā)送;確認消息發(fā)送模塊,用于將與所述數(shù)據(jù)對應(yīng)的確認消息發(fā)送到接收端;當確認接收端接收到所述確認消息后,將所述數(shù)據(jù)標識為已確認。本發(fā)明實施例提出了一種數(shù)據(jù)接收方法,包括301、接收到發(fā)送端發(fā)送的數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);302、接收到發(fā)送端發(fā)送的通知消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例提出了一種數(shù)據(jù)接收裝置,包括數(shù)據(jù)接收模塊,用于接收發(fā)送端發(fā)送的數(shù)據(jù),當接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);確認消息接收模塊,用于接收發(fā)送端發(fā)送的確認消息,當接收到所述確認消息后, 使所述數(shù)據(jù)可用。本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式, 可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣可以防止剛接收到數(shù)據(jù)就被應(yīng)用程序消費掉,而接收端或發(fā)送端此時故障導(dǎo)致誤認為數(shù)據(jù)未被接受到,導(dǎo)致數(shù)據(jù)重復(fù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù),可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。而且本發(fā)明實施例中,不需要通過兩階段提交即可解決當發(fā)送端或接收端故障時導(dǎo)致的兩端的數(shù)據(jù)不同步的問題,且比兩階段提交具有更好的靈活性和可用性。
圖1為本發(fā)明第一實施例的流程示意圖;圖2為本發(fā)明第二實施例的結(jié)構(gòu)示意圖;圖3為本發(fā)明第三實施例的流程示意圖;圖4為本發(fā)明第四實施例的結(jié)構(gòu)示意圖;圖5為本發(fā)明第五實施例的流程示意圖6為本發(fā)明第六實施例的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。實施例1本發(fā)明第一實施例提出了一種數(shù)據(jù)傳輸方法,包括步驟1001、向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);步驟1002、向接收端發(fā)送確認消息直到接收端確認收到;當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù), 可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID, 重復(fù)則覆蓋或刪除的方式實現(xiàn)。進一步的,上述方法可以如圖1所示,具體為步驟2001、讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,則進入步驟2002 ;如果數(shù)據(jù)被標識為已發(fā)送,則進入步驟2004 ;如果該數(shù)據(jù)被標識為已確認,則發(fā)送端將該數(shù)據(jù)刪除;步驟2002、發(fā)送端發(fā)送數(shù)據(jù);判斷接收端是否收到數(shù)據(jù),如果未收到則返回步驟 2001 ;否則進入步驟2003 ;步驟2003、發(fā)送端將數(shù)據(jù)標識為已發(fā)送,接收端使數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);步驟2004、發(fā)送端發(fā)送確認消息;判斷接收端是否收到確認消息,如果未收到則返回步驟2001 ;否則進入步驟2005 ;步驟2005、發(fā)送端將數(shù)據(jù)標識為已確認,接收端使數(shù)據(jù)可用。本發(fā)明實施例提出了一種具體的實現(xiàn)方法,通過在發(fā)送端對數(shù)據(jù)狀態(tài)進行標識的方式,可以保證發(fā)送端不會漏發(fā)數(shù)據(jù)。同時,即使發(fā)送端在發(fā)送流程中出現(xiàn)故障,在故障恢復(fù)后又從步驟2001開始,可以防止浪費流程。本發(fā)明實施例通過只有發(fā)送端對數(shù)據(jù)狀態(tài)進行標識,可以保證高效性。實施例2本發(fā)明第二實施例提出了一種數(shù)據(jù)傳輸裝置,包括發(fā)送端1和接收端2 ;所述發(fā)送端1包括
發(fā)送模塊11,用于向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;并用于向接收端發(fā)送確認消息直到接收端確認收到;所述接收端2包括接收模塊21,用于接收所述發(fā)送端發(fā)送的數(shù)據(jù)和確認消息;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù), 可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID, 重復(fù)則覆蓋或刪除的方式實現(xiàn)。進一步的,其結(jié)構(gòu)如圖2所示,上述裝置可以具體為所述發(fā)送端1包括狀態(tài)判斷模塊111,用于讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,將所述數(shù)據(jù)發(fā)送到數(shù)據(jù)發(fā)送模塊;如果數(shù)據(jù)被標識為已發(fā)送,則激活確認消息發(fā)送模塊;如果數(shù)據(jù)被標識為已確認,則刪除所述數(shù)據(jù);數(shù)據(jù)發(fā)送模塊112,用于將數(shù)據(jù)發(fā)送到接收端;當接收端接收到所述數(shù)據(jù)后,將所述數(shù)據(jù)標識為已發(fā)送;確認消息發(fā)送模塊113,用于將與所述數(shù)據(jù)對應(yīng)的確認消息發(fā)送到接收端;當接收端接收到所述確認消息后,將所述數(shù)據(jù)標識為已確認;所述接收端2包括數(shù)據(jù)接收模塊211,用于接收發(fā)送端發(fā)送的數(shù)據(jù),當接收到該數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);確認消息接收模塊212,用于接收發(fā)送端發(fā)送的確認消息,當接收到該確認消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例提出了一種具體的實現(xiàn)方法,通過在發(fā)送端對數(shù)據(jù)狀態(tài)進行標識的方式,可以保證發(fā)送端不會漏發(fā)數(shù)據(jù)。同時,即使發(fā)送端在發(fā)送流程中出現(xiàn)故障,在故障恢復(fù)后又從狀態(tài)判斷模塊開始,可以防止浪費流程。本發(fā)明實施例通過只有發(fā)送端對數(shù)據(jù)狀態(tài)進行標識,可以保證高效性。實施例3本發(fā)明第3實施例提出了一種數(shù)據(jù)發(fā)送的方法,包括步驟3001、根據(jù)數(shù)據(jù)的狀態(tài)向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;步驟3002、根據(jù)數(shù)據(jù)的狀態(tài)向接收端發(fā)送確認消息直到接收端確認收到。本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù), 可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID, 重復(fù)則覆蓋或刪除的方式實現(xiàn)。進一步的,上述方法可以如圖3所示,具體為步驟4001、發(fā)送端讀取數(shù)據(jù)的狀態(tài)標識,如果所述數(shù)據(jù)被標識為未發(fā)送,則進入步驟4002 ;如果所述數(shù)據(jù)被標識為已發(fā)送,則進入步驟4003 ;如果所述數(shù)據(jù)被標識為已確認, 則將該數(shù)據(jù)刪除,步驟結(jié)束;步驟4002、發(fā)送端發(fā)送數(shù)據(jù);如果接收端未接收到該數(shù)據(jù),則返回步驟4001 ;否則進入步驟4003 ;步驟4003、將所述數(shù)據(jù)標識為發(fā)送;步驟4004、發(fā)送端發(fā)送確認消息;如果接收端未接收到該確認消息,則返回步驟 4001 ;否則進入步驟4005 ;步驟4005、將所述數(shù)據(jù)標識為已確認。本發(fā)明實施例提出了一種具體的實現(xiàn)方法,通過在發(fā)送端對數(shù)據(jù)狀態(tài)進行標識的方式,可以保證發(fā)送端不會漏發(fā)數(shù)據(jù)。同時,即使發(fā)送端在發(fā)送流程中出現(xiàn)故障,在故障恢復(fù)后又從4001開始,可以防止浪費流程。本發(fā)明實施例通過只有發(fā)送端對數(shù)據(jù)狀態(tài)進行標識,可以保證高效性。實施例4本發(fā)明第四實施例提出了一種數(shù)據(jù)發(fā)送裝置,包括發(fā)送模塊11,用于向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;并用于向接收端發(fā)送確認消息直到接收端確認收到。本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù), 可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID, 重復(fù)則覆蓋或刪除的方式實現(xiàn)。進一步的,其結(jié)構(gòu)如圖4所示,上述裝置可以具體為狀態(tài)判斷模塊111,用于讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,將所述數(shù)據(jù)發(fā)送到數(shù)據(jù)發(fā)送模塊;如果數(shù)據(jù)被標識為已發(fā)送,則激活確認消息發(fā)送模塊;如果數(shù)據(jù)被標識為已確認,則刪除所述數(shù)據(jù);數(shù)據(jù)發(fā)送模塊112,用于將數(shù)據(jù)發(fā)送到接收端;當接收端接收到所述數(shù)據(jù)后,將所述數(shù)據(jù)標識為已發(fā)送;確認消息發(fā)送模塊113,用于將與所述數(shù)據(jù)對應(yīng)的確認消息發(fā)送到接收端;當接收端接收到所述確認消息后,將所述數(shù)據(jù)標識為已確認。發(fā)明實施例提出了一種具體的實現(xiàn)方法,通過在發(fā)送端對數(shù)據(jù)狀態(tài)進行標識的方式,可以保證發(fā)送端不會漏發(fā)數(shù)據(jù)。同時,即使發(fā)送端在發(fā)送流程中出現(xiàn)故障,在故障恢復(fù)后又從狀態(tài)判斷模塊開始,可以防止浪費流程。本發(fā)明實施例通過只有發(fā)送端對數(shù)據(jù)狀態(tài)進行標識,可以保證高效性。實施例5本發(fā)明第五實施例提出了一種數(shù)據(jù)接收方法,其流程如圖5所示,包括步驟5001、接收到發(fā)送端發(fā)送的數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);步驟5002、接收到發(fā)送端發(fā)送的通知消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù), 可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID, 重復(fù)則覆蓋或刪除的方式實現(xiàn)。實施例6本發(fā)明第六實施例提出了一種數(shù)據(jù)接收裝置,其結(jié)構(gòu)如圖6所示,包括數(shù)據(jù)接收模塊211,用于接收發(fā)送端發(fā)送的數(shù)據(jù),當接收到該數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);確認消息接收模塊212,用于接收發(fā)送端發(fā)送的確認消息,當接收到該確認消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù), 可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID, 重復(fù)則覆蓋或刪除的方式實現(xiàn)。通過以上實施例可以看出,本發(fā)明實施例通過兩次發(fā)送的方式分別發(fā)送數(shù)據(jù)和確認信息。這種兩次發(fā)送的方式,相比較現(xiàn)有技術(shù)中一次發(fā)送的方式,可以能夠確保接收端接收數(shù)據(jù)不重、不漏。接收端接收到數(shù)據(jù)時使該數(shù)據(jù)不可用,而只有當接收端接收到確認消息時次可以使用戶端使用該數(shù)據(jù)。這樣發(fā)送端在未確認接收端接收到時,就重復(fù)發(fā)送該數(shù)據(jù)。即使因為發(fā)送端故障未收到確認而多次發(fā)送了該數(shù)據(jù),由于該數(shù)據(jù)是不可用的,則多次發(fā)送只是覆蓋前次的數(shù)據(jù),可以保證數(shù)據(jù)不重,也可以保證數(shù)據(jù)不漏。其中,判斷接收端是否接收到數(shù)據(jù)是一種成熟的現(xiàn)有技術(shù),例如TCP協(xié)議,在此不再贅述。其中,接收端使數(shù)據(jù)不可用的方法可以為將數(shù)據(jù)存儲到特定分區(qū),或是將數(shù)據(jù)隱藏,或其他方法,本發(fā)明實施例不以此為限。接收端保證數(shù)據(jù)不重復(fù)可以通過讀取數(shù)據(jù)ID,重復(fù)則覆蓋或刪除的方式實現(xiàn)。同時,本發(fā)明實施例提出了一種具體的實現(xiàn)方法,通過在發(fā)送端對數(shù)據(jù)狀態(tài)進行標識的方式,可以保證發(fā)送端不會漏發(fā)數(shù)據(jù)。同時,即使發(fā)送端在發(fā)送流程中出現(xiàn)故障,在故障恢復(fù)后又從4001開始,可以防止浪費流程。本發(fā)明實施例通過只有發(fā)送端對數(shù)據(jù)狀態(tài)進行標識,可以保證高效性。以上實施例提供的技術(shù)方案中的全部或部分內(nèi)容可以通過軟件編程實現(xiàn),其軟件程序存儲在可讀取的存儲介質(zhì)中,存儲介質(zhì)例如計算機中的硬盤、光盤或軟盤。以上僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)傳輸方法,其特征在于,包括 向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù), 則只保留一個數(shù)據(jù);向接收端發(fā)送確認消息直到接收端確認收到; 當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于,所述方法具體為101、發(fā)送端讀取數(shù)據(jù)的狀態(tài)標識,如果所述數(shù)據(jù)被標識為未發(fā)送,則進入步驟102;如果所述數(shù)據(jù)被標識為已發(fā)送,則進入步驟103 ;如果所述數(shù)據(jù)被標識為已確認,則將該數(shù)據(jù)刪除,步驟結(jié)束;102、發(fā)送端發(fā)送數(shù)據(jù);如果接收端未接收到該數(shù)據(jù),則返回步驟101;否則將所述數(shù)據(jù)標識為發(fā)送;接收端使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);103、發(fā)送端發(fā)送確認消息;如果接收端未接收到該確認消息,則返回步驟101;否則將所述數(shù)據(jù)標識為已確認;接收端使所述數(shù)據(jù)可用。
3.一種數(shù)據(jù)傳輸裝置,包括發(fā)送端和接收端,其特征在于, 所述發(fā)送端包括發(fā)送模塊,用于向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;并用于向接收端發(fā)送確認消息直到接收端確認收到。 所述接收端包括接收模塊,用于接收所述發(fā)送端發(fā)送的數(shù)據(jù)和確認消息;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)傳輸裝置,其特征在于, 所述發(fā)送端包括狀態(tài)判斷模塊,用于讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,將所述數(shù)據(jù)發(fā)送到數(shù)據(jù)發(fā)送模塊;如果數(shù)據(jù)被標識為已發(fā)送,則激活確認消息發(fā)送模塊;如果數(shù)據(jù)被標識為已確認,則刪除所述數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,用于將數(shù)據(jù)發(fā)送到接收端;當接收端接收到所述數(shù)據(jù)后,將所述數(shù)據(jù)標識為已發(fā)送;確認消息發(fā)送模塊,用于將與所述數(shù)據(jù)對應(yīng)的確認消息發(fā)送到接收端;當接收端接收到所述確認消息后,將所述數(shù)據(jù)標識為已確認; 所述接收端包括數(shù)據(jù)接收模塊,用于接收發(fā)送端發(fā)送的數(shù)據(jù),當接收到該數(shù)據(jù)后,使所述數(shù)據(jù)不可用; 如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);確認消息接收模塊,用于接收發(fā)送端發(fā)送的確認消息,當接收到該確認消息后,使所述數(shù)據(jù)可用。
5.一種數(shù)據(jù)發(fā)送方法,其特征在于,包括 向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;向接收端發(fā)送確認消息直到接收端確認收到。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)發(fā)送方法,其特征在于,所述方法具體為.201、發(fā)送端讀取數(shù)據(jù)的狀態(tài)標識,如果所述數(shù)據(jù)被標識為未發(fā)送,則進入步驟202;如果所述數(shù)據(jù)被標識為已發(fā)送,則進入步驟203 ;如果所述數(shù)據(jù)被標識為已確認,則將該數(shù)據(jù)刪除,步驟結(jié)束;.202、發(fā)送端發(fā)送數(shù)據(jù);如果接收端未接收到該數(shù)據(jù),則返回步驟201;否則將所述數(shù)據(jù)標識為發(fā)送;.203、發(fā)送端發(fā)送確認消息;如果接收端未接收到該確認消息,則返回步驟201;否則將所述數(shù)據(jù)標識為已確認。
7.一種數(shù)據(jù)發(fā)送裝置,其特征在于,包括發(fā)送模塊,用于向接收端發(fā)送數(shù)據(jù)直到接收端確認收到;并用于向接收端發(fā)送確認消息直到接收端確認收到。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)發(fā)送裝置,其特征在于,所述發(fā)送模塊包括狀態(tài)判斷模塊,用于讀取數(shù)據(jù)的狀態(tài)標識,如果數(shù)據(jù)被標識為未發(fā)送,將所述數(shù)據(jù)發(fā)送到數(shù)據(jù)發(fā)送模塊;如果數(shù)據(jù)被標識為已發(fā)送,則激活確認消息發(fā)送模塊;如果數(shù)據(jù)被標識為已確認,則刪除所述數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,用于將數(shù)據(jù)發(fā)送到接收端;當確認接收端接收到所述數(shù)據(jù)后,將所述數(shù)據(jù)標識為已發(fā)送;確認消息發(fā)送模塊,用于將與所述數(shù)據(jù)對應(yīng)的確認消息發(fā)送到接收端;當確認接收端接收到所述確認消息后,將所述數(shù)據(jù)標識為已確認。
9.一種數(shù)據(jù)接收方法,其特征在于,包括.301、接收到發(fā)送端發(fā)送的數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù), 則只保留一個數(shù)據(jù);.302、接收到發(fā)送端發(fā)送的通知消息后,使所述數(shù)據(jù)可用。
10.一種數(shù)據(jù)接收裝置,其特征在于,包括數(shù)據(jù)接收模塊,用于接收發(fā)送端發(fā)送的數(shù)據(jù),當接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;如果接收端重復(fù)收到同一數(shù)據(jù),則只保留一個數(shù)據(jù);確認消息接收模塊,用于接收發(fā)送端發(fā)送的確認消息,當接收到所述確認消息后,使所述數(shù)據(jù)可用。
全文摘要
本發(fā)明提出了一種數(shù)據(jù)傳輸方法和裝置及數(shù)據(jù)發(fā)送、接收方法和裝置,屬于計算機技術(shù)領(lǐng)域。本發(fā)明實施例的發(fā)送端根據(jù)數(shù)據(jù)的狀態(tài)向接收端發(fā)送數(shù)據(jù),當接收端接收到所述數(shù)據(jù)后,發(fā)送端將所述數(shù)據(jù)標識為已發(fā)送;當所述接收端接收到所述數(shù)據(jù)后,使所述數(shù)據(jù)不可用;根據(jù)數(shù)據(jù)的狀態(tài)向接收端發(fā)送確認消息,當接收端接收到所述確認消息后,發(fā)送端將所述數(shù)據(jù)標識為已確認;當所述接收端接收到所述確認消息后,使所述數(shù)據(jù)可用。本發(fā)明實施例能夠確保接收端接收數(shù)據(jù)不重、不漏。同時僅有發(fā)送端需要對數(shù)據(jù)進行標識,可以保證數(shù)據(jù)傳輸?shù)母咝?。同時,只有發(fā)送端對數(shù)據(jù)狀態(tài)進行標識,可以保證高效性。
文檔編號H04L1/00GK102202076SQ20101013975
公開日2011年9月28日 申請日期2010年3月23日 優(yōu)先權(quán)日2010年3月23日
發(fā)明者鄭德樂 申請人:深圳市金蝶中間件有限公司