在Swift和C#中检测局域网上的多个应用实例

在Swift和C#中检测局域网上的多个应用实例,c#,swift,macos,networking,C#,Swift,Macos,Networking,我正在寻找一种代码策略,以便能够检测我的应用程序的多个实例是否在局域网上运行。我曾尝试过寻找想法,但没有任何东西能与之相联系,我也没有找到有意义的搜索查询 我一开始只是使用Swift代码,但最终会希望在windows下包含C# 我怀疑我必须生成某种数据包,以使用唯一标识符在LAN上广播自己,然后它检测到使用不匹配标识符的广播 我不是在寻找一个预制作的应用程序,这样做。我想把它嵌入到这段代码中 我不想阻止倍数的运行,我只想获取使用统计数据,并将其发送到我的服务器,该服务器承载该应用程序的web界面

我正在寻找一种代码策略,以便能够检测我的应用程序的多个实例是否在局域网上运行。我曾尝试过寻找想法,但没有任何东西能与之相联系,我也没有找到有意义的搜索查询

我一开始只是使用Swift代码,但最终会希望在windows下包含C#

我怀疑我必须生成某种数据包,以使用唯一标识符在LAN上广播自己,然后它检测到使用不匹配标识符的广播

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


我不想阻止倍数的运行,我只想获取使用统计数据,并将其发送到我的服务器,该服务器承载该应用程序的web界面。(这部分我没有任何问题)

就像你说的,你可以使用UDP来实现这一点。只要广播一条“我在这里”的信息。从那里,您可以设置TCP连接以在应用程序之间进行通信


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

您可以使用一种简单的、适合您需要的版本。您需要在已知地址上运行一个服务器,监听传入的连接,并且应用程序的每个实例在启动时都会向它注册(例如,仅通过连接)


广播会更简单,但也有一些限制,比如在子网之间或更宽的范围内广播有困难。

我非常喜欢并欣赏安迪和杰伦的两个答案。我项目的另一位开发人员评论说,用户可能会对家里的电话感到奇怪。因此,我对进一步研究这个问题犹豫不决。但这两个答案都给了我一个想法,允许在同一局域网上的应用程序之间共享资源。我还认为,因为我甚至很难找到一个搜索查询来解决这个问题,所以即使我不打算进一步研究我所问的“功能”,也要保持原样,这可能会在将来帮助其他人。