我最近试图建立一个简单的点对点网络模型。在我的概念中,对等体尝试使用第三方“引导”对等源来打开端口并与尽可能多的对等体建立连接以找到对等体。我很快发现了一个问题:
此时我们将A连接到B和B的服务器套接字连接到A的服务器套接字,而无法确保这些实际上是相同的主机相互通信 - 客户端连接的源端口不建议他们打开哪个服务器端口。此外,我无法通过IP地址识别对等体,因为它们可能落后于某种NAT。
我可以做些什么来避免这种情况?在我的情况下,加倍连接不应该真正导致去同步问题,但这种冗余可能会导致我不想要的开销。
答案 0 :(得分:1)
每个节点都应该使用它生成的唯一GUID自我介绍。然后,当A和B彼此建立连接时,他们可以通过简单地比较它们的GUID来决定谁将成为主设备 - 具有较大GUID的节点成为主设备并保持其连接(即它启动的连接)。具有较小GUID的节点关闭发起连接并保持接收的节点。