我有两台处理某些事件的电脑。它们可能同时检测到同一事件。我需要确定哪个对等方的事件将是剩下的唯一事件(然后对等方必须对事件做一些事情)。我没有可用的通用同步工具,例如数据库。
我认为这个问题是这样的:
每个对等方如何决定保留哪个数据包?两者都生成了数据包,两者都发送了它,现在两者都看到另一个对等体发送了自己的副本。
我需要解决此问题,使得一个对等方的数据包“占优势”,以便该对等方可以执行必要的操作。
我目前最好的猜测:
我正在考虑用随机数“装备”数据包。如果另一个对等体的数据包具有较低的随机数,则将其丢弃。如果number等于我的,则重复该过程直到其中一个random更大或者网络中的打嗝导致整个握手仅从一侧通过。
我建议的解决方案是否有效?有更优化的解决方案吗?
答案 0 :(得分:1)
如果对等体具有其他对等体已知的ID,则可以保留源自具有较高ID的对等体的分组。
如果他们没有ID,您可以改用他们的IP地址。将IP转换为整数,比较它们并使用“更高”的IP保持发送方的数据包。
==> 由于NAT(可能存在重复的IP),这可能不够可靠。
您可以使用协议的任何可用字段或基础协议(时间戳,MAC地址等)。