发明内容
为了解决现有技术中在数据传输方式存在的为了提高数据的可靠性导致传输效率低的问题,本发明实施例提供了一种数据传输方法和装置及数据发送、接收方法和装置。所述技术方案如下:
本发明实施例提出了一种数据传输方法,包括:
向接收端发送数据直到接收端确认收到;
当所述接收端接收到所述数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
向接收端发送确认消息直到接收端确认收到;
当所述接收端接收到所述确认消息后,使所述数据可用;
所述方法具体为:
101、发送端读取数据的状态标识,如果所述数据被标识为未发送,则进入步骤102;如果所述数据被标识为已发送,则进入步骤103;如果所述数据被标识为已确认,则将该数据删除,步骤结束;
102、发送端发送数据;判断接收端是否收到数据,如果接收端未接收到该数据,则返回步骤101;否则将所述数据标识为已发送;接收端使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
103、发送端发送确认消息;判断接收端是否收到确认消息,如果接收端未接收到该确认消息,则返回步骤101;否则将所述数据标识为已确认;接收端使所述数据可用。
本发明实施例提出了一种数据传输装置,包括发送端和接收端,
所述发送端包括:
发送模块,用于向接收端发送数据直到接收端确认收到;并用于向接收端发送确认消息直到接收端确认收到;
所述接收端包括:
接收模块,用于接收所述发送端发送的数据和确认消息;当所述接收端接收到所述数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;当所述接收端接收到所述确认消息后,使所述数据可用;
其中,所述发送端包括:
状态判断模块,用于读取数据的状态标识,如果数据被标识为未发送,将所述数据发送到数据发送模块;如果数据被标识为已发送,则激活确认消息发送模块;如果数据被标识为已确认,则删除所述数据;
数据发送模块,用于将数据发送到接收端;判断接收端是否收到数据,当接收端接收到所述数据后,将所述数据标识为已发送;
确认消息发送模块,用于将与所述数据对应的确认消息发送到接收端;判断接收端是否收到确认消息,当接收端接收到所述确认消息后,将所述数据标识为已确认;
所述接收端包括:
数据接收模块,用于接收发送端发送的数据,当接收到该数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
确认消息接收模块,用于接收发送端发送的确认消息,当接收到该确认消息后,使所述数据可用。
本发明实施例提出了一种数据发送方法,包括:
向接收端发送数据直到接收端确认收到;
向接收端发送确认消息直到接收端确认收到;
所述方法具体为:
201、发送端读取数据的状态标识,如果所述数据被标识为未发送,则进入步骤202;如果所述数据被标识为已发送,则进入步骤203;如果所述数据被标识为已确认,则将该数据删除,步骤结束;
202、发送端发送数据;判断接收端是否收到数据,如果接收端未接收到该数据,则返回步骤201;否则将所述数据标识为已发送;
203、发送端发送确认消息;判断接收端是否收到确认消息,如果接收端未接收到该确认消息,则返回步骤201;否则将所述数据标识为已确认。
本发明实施例提出了一种数据发送装置,包括:
发送模块,用于向接收端发送数据直到接收端确认收到;并用于向接收端发送确认消息直到接收端确认收到;
其中,所述发送模块包括:
状态判断模块,用于读取数据的状态标识,如果数据被标识为未发送,将所述数据发送到数据发送模块;如果数据被标识为已发送,则激活确认消息发送模块;如果数据被标识为已确认,则删除所述数据;
数据发送模块,用于将数据发送到接收端;判断接收端是否收到数据,当确认接收端接收到所述数据后,将所述数据标识为已发送;
确认消息发送模块,用于将与所述数据对应的确认消息发送到接收端;判断接收端是否收到确认消息,当确认接收端接收到所述确认消息后,将所述数据标识为已确认。
本发明实施例提供的技术方案带来的有益效果是:本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样可以防止刚接收到数据就被应用程序消费掉,而接收端或发送端此时故障导致误认为数据未被接受到,导致数据重复。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。而且本发明实施例中,不需要通过两阶段提交即可解决当发送端或接收端故障时导致的两端的数据不同步的问题,且比两阶段提交具有更好的灵活性和可用性。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
本发明第一实施例提出了一种数据传输方法,包括:
步骤1001、向接收端发送数据直到接收端确认收到;当所述接收端接收到所述数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
步骤1002、向接收端发送确认消息直到接收端确认收到;当所述接收端接收到所述确认消息后,使所述数据可用。
本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。
其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
进一步的,上述方法可以如图1所示,具体为:
步骤2001、读取数据的状态标识,如果数据被标识为未发送,则进入步骤2002;如果数据被标识为已发送,则进入步骤2004;如果该数据被标识为已确认,则发送端将该数据删除;
步骤2002、发送端发送数据;判断接收端是否收到数据,如果未收到则返回步骤2001;否则进入步骤2003;
步骤2003、发送端将数据标识为已发送,接收端使数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
步骤2004、发送端发送确认消息;判断接收端是否收到确认消息,如果未收到则返回步骤2001;否则进入步骤2005;
步骤2005、发送端将数据标识为已确认,接收端使数据可用。
本发明实施例提出了一种具体的实现方法,通过在发送端对数据状态进行标识的方式,可以保证发送端不会漏发数据。同时,即使发送端在发送流程中出现故障,在故障恢复后又从步骤2001开始,可以防止浪费流程。本发明实施例通过只有发送端对数据状态进行标识,可以保证高效性。
实施例2
本发明第二实施例提出了一种数据传输装置,包括发送端1和接收端2;
所述发送端1包括:
发送模块11,用于向接收端发送数据直到接收端确认收到;并用于向接收端发送确认消息直到接收端确认收到;
所述接收端2包括:
接收模块21,用于接收所述发送端发送的数据和确认消息;当所述接收端接收到所述数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;当所述接收端接收到所述确认消息后,使所述数据可用。
本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。
其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
进一步的,其结构如图2所示,上述装置可以具体为:
所述发送端1包括:
状态判断模块111,用于读取数据的状态标识,如果数据被标识为未发送,将所述数据发送到数据发送模块;如果数据被标识为已发送,则激活确认消息发送模块;如果数据被标识为已确认,则删除所述数据;
数据发送模块112,用于将数据发送到接收端;当接收端接收到所述数据后,将所述数据标识为已发送;
确认消息发送模块113,用于将与所述数据对应的确认消息发送到接收端;当接收端接收到所述确认消息后,将所述数据标识为已确认;
所述接收端2包括:
数据接收模块211,用于接收发送端发送的数据,当接收到该数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
确认消息接收模块212,用于接收发送端发送的确认消息,当接收到该确认消息后,使所述数据可用。
本发明实施例提出了一种具体的实现方法,通过在发送端对数据状态进行标识的方式,可以保证发送端不会漏发数据。同时,即使发送端在发送流程中出现故障,在故障恢复后又从状态判断模块开始,可以防止浪费流程。本发明实施例通过只有发送端对数据状态进行标识,可以保证高效性。
实施例3
本发明第3实施例提出了一种数据发送的方法,包括:
步骤3001、根据数据的状态向接收端发送数据直到接收端确认收到;
步骤3002、根据数据的状态向接收端发送确认消息直到接收端确认收到。
本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。
其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
进一步的,上述方法可以如图3所示,具体为:
步骤4001、发送端读取数据的状态标识,如果所述数据被标识为未发送,则进入步骤4002;如果所述数据被标识为已发送,则进入步骤4003;如果所述数据被标识为已确认,则将该数据删除,步骤结束;
步骤4002、发送端发送数据;如果接收端未接收到该数据,则返回步骤4001;否则进入步骤4003;
步骤4003、将所述数据标识为发送;
步骤4004、发送端发送确认消息;如果接收端未接收到该确认消息,则返回步骤4001;否则进入步骤4005;
步骤4005、将所述数据标识为已确认。
本发明实施例提出了一种具体的实现方法,通过在发送端对数据状态进行标识的方式,可以保证发送端不会漏发数据。同时,即使发送端在发送流程中出现故障,在故障恢复后又从4001开始,可以防止浪费流程。本发明实施例通过只有发送端对数据状态进行标识,可以保证高效性。
实施例4
本发明第四实施例提出了一种数据发送装置,包括:
发送模块11,用于向接收端发送数据直到接收端确认收到;并用于向接收端发送确认消息直到接收端确认收到。
本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。
其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
进一步的,其结构如图4所示,上述装置可以具体为:
状态判断模块111,用于读取数据的状态标识,如果数据被标识为未发送,将所述数据发送到数据发送模块;如果数据被标识为已发送,则激活确认消息发送模块;如果数据被标识为已确认,则删除所述数据;
数据发送模块112,用于将数据发送到接收端;当接收端接收到所述数据后,将所述数据标识为已发送;
确认消息发送模块113,用于将与所述数据对应的确认消息发送到接收端;当接收端接收到所述确认消息后,将所述数据标识为已确认。
发明实施例提出了一种具体的实现方法,通过在发送端对数据状态进行标识的方式,可以保证发送端不会漏发数据。同时,即使发送端在发送流程中出现故障,在故障恢复后又从状态判断模块开始,可以防止浪费流程。本发明实施例通过只有发送端对数据状态进行标识,可以保证高效性。
实施例5
本发明第五实施例提出了一种数据接收方法,其流程如图5所示,包括:
步骤5001、接收到发送端发送的数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
步骤5002、接收到发送端发送的通知消息后,使所述数据可用。
本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。
其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
实施例6
本发明第六实施例提出了一种数据接收装置,其结构如图6所示,包括:
数据接收模块211,用于接收发送端发送的数据,当接收到该数据后,使所述数据不可用;如果接收端重复收到同一数据,则只保留一个数据;
确认消息接收模块212,用于接收发送端发送的确认消息,当接收到该确认消息后,使所述数据可用。
本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。
其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
通过以上实施例可以看出,本发明实施例通过两次发送的方式分别发送数据和确认信息。这种两次发送的方式,相比较现有技术中一次发送的方式,可以能够确保接收端接收数据不重、不漏。接收端接收到数据时使该数据不可用,而只有当接收端接收到确认消息时次可以使用户端使用该数据。这样发送端在未确认接收端接收到时,就重复发送该数据。即使因为发送端故障未收到确认而多次发送了该数据,由于该数据是不可用的,则多次发送只是覆盖前次的数据,可以保证数据不重,也可以保证数据不漏。其中,判断接收端是否接收到数据是一种成熟的现有技术,例如TCP协议,在此不再赘述。其中,接收端使数据不可用的方法可以为:将数据存储到特定分区,或是将数据隐藏,或其他方法,本发明实施例不以此为限。接收端保证数据不重复可以通过读取数据ID,重复则覆盖或删除的方式实现。
同时,本发明实施例提出了一种具体的实现方法,通过在发送端对数据状态进行标识的方式,可以保证发送端不会漏发数据。同时,即使发送端在发送流程中出现故障,在故障恢复后又从4001开始,可以防止浪费流程。本发明实施例通过只有发送端对数据状态进行标识,可以保证高效性。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。