在Swift和C#中检测LAN上的多个应用程序实例

时间:2016-03-04 09:29:03

标签: c# swift macos networking

我正在寻找一种代码策略,以便能够检测我的应用程序的多个实例是否正在通过LAN运行。我试图寻找想法,但没有任何东西钉住它,我用完了有意义的搜索查询。

我主要是从Swift代码开始,但最终还是希望在Windows下包含C#。

我怀疑我必须生成一些somesort数据包,以便通过LAN使用唯一标识符广播自己,并检测到标识符不匹配的广播?

我不是在寻找一个这样做的预制应用程序。我想将它嵌入到这段代码中。

我不想阻止多次运行,我只想获取使用统计数据并将其发送到托管此应用程序的Web界面的服务器。 (这部分我没有问题)

2 个答案:

答案 0 :(得分:1)

就像你说的那样,你可以使用UDP。只是播放一个'我在这里'信息。从那里,您可以设置TCP连接以在应用程序之间进行通信。

重读最后一段后,您可以在服务器的同一局域网上检测到2个实例,因为它们都使用相同的(外部)IP。

答案 1 :(得分:1)

您可以使用rendezvous server,它的简单版本可根据您的需要进行调整。您需要在众所周知的地址上运行服务器来监听传入的连接,并且应用程序的每个实例都会在启动时注册它(例如通过连接)。

广播会更简单,但也存在一些限制,例如难以在子网之间广播或更广泛的广播。

相关问题