Android &引用;原子性“;在两个设备之间的通信中
我想将短数据从设备A(发送方)发送到设备B(接收方),Android &引用;原子性“;在两个设备之间的通信中,android,communication,Android,Communication,我想将短数据从设备A(发送方)发送到设备B(接收方),这样如果设备B将保存数据,那么设备A必须将其从存储器中删除 如果B不保存或A不删除,则必须恢复通信(就好像根本没有通信一样) 通信是在不稳定的信道上进行的,所以很有可能发生这种情况 在某个地方被打破 我应该如何处理这个问题 可以是C++(< P>)TCP(可靠、有序、错误检查传递)的算法: A将数据发送给B B保存数据 B向A发送OK A永久删除数据 B只保留数据(不删除) 例外情况: 如果某些步骤失败,请不要执行下一步 如果B没有从A接收
这样如果设备B将保存数据,那么设备A必须将其从存储器中删除 如果B不保存或A不删除,则必须恢复通信(就好像根本没有通信一样) 通信是在不稳定的信道上进行的,所以很有可能发生这种情况 在某个地方被打破 我应该如何处理这个问题
可以是C++(
< P>)TCP(可靠、有序、错误检查传递)的算法:- 如果某些步骤失败,请不要执行下一步
- 如果B没有从A接收到OK,则B不会永久保存数据李>
- 如果A没有从B收到OK,A不会永久删除数据
通常,保存数据比确保只有一台设备拥有数据更重要。因此,从这个意义上讲,您的方法不是故障安全的。假设第4步失败,那么我们将永久丢失数据。因此,只有当我们没有数据而不是重复数据(不太可能的要求)时,您的算法才会工作。如果第4步失败,您将不会执行第5步!没有数据丢失。必须有一种方法知道它,这样就可以了。当然你有。如果您使用的是TCP,如果B没有收到,连接将失败。它是TCP(可靠、有序、错误检查的交付)。如果你没有在超时前收到OK,这是一个失败,你必须回滚。如果你假设a知道B是否收到它,那么你必须假设B知道a是否收到它。那你为什么还要这样做呢?您只需要3,这样A就知道B没有存储问题(如硬盘故障)