Tcp 由相同应用程序组成的分布式网络

Tcp 由相同应用程序组成的分布式网络,tcp,Tcp,我带着一个相当哲学的问题来到这里: 假设我们有两个相同的应用程序,具有相似的设置范围。 我们希望这些应用程序可以通过套接字进行通信 据我所知,在点到点应用程序中,其中一个应为主动(客户端)和被动(服务器),即客户端“连接”,服务器应处于“接受”状态。这让我们有必要在运行它们之前知道谁是活跃的,谁不是活跃的 正如我前面提到的,我想让这个应用程序完全相同。让两个相同的应用程序可以连接在一起,做出明智的决定谁是谁 之所以考虑这个问题,是因为我希望每个新应用程序都可以连接到其他应用程序的网络,而只需要知

我带着一个相当哲学的问题来到这里:

假设我们有两个相同的应用程序,具有相似的设置范围。 我们希望这些应用程序可以通过套接字进行通信

据我所知,在点到点应用程序中,其中一个应为主动(客户端)和被动(服务器),即客户端“连接”,服务器应处于“接受”状态。这让我们有必要在运行它们之前知道谁是活跃的,谁不是活跃的

正如我前面提到的,我想让这个应用程序完全相同。让两个相同的应用程序可以连接在一起,做出明智的决定谁是谁

之所以考虑这个问题,是因为我希望每个新应用程序都可以连接到其他应用程序的网络,而只需要知道其中一个应用程序的ip地址

免责声明:它不是恶意软件。它是ERP系统的传输层

我非常乐意提供任何想法、链接等。

选项:

  • 指定一个应用程序始终作为服务器。它在某个端口上开始监听,而另一个应用程序在启动时会反复尝试连接到服务器,直到成功
  • 让两者同时充当服务器和客户端。一台主机上的应用程序启动并尝试连接到另一台主机,如果无法连接,则启动一台服务器,侦听来自另一台主机的连接。另一台主机上的应用程序也会这样做。应添加重试以避免竞争条件
  • 让它们各自充当客户端并连接到第三台服务器。然后,他们通过该服务器进行通信,或者该服务器告诉他们如何相互通信(例如,服务器可能会告诉一个应用程序是服务器,而告诉另一个应用程序是客户端)
对#2的补充:如果它们都在启动时充当服务器,然后尝试彼此连接,那么您需要处理的唯一问题是,如果两者都成功,然后解决这一问题,只需要断开其中一个连接即可。