如何在Swift中查找运行我的应用程序实例的本地网络设备的IP地址?

时间:2017-02-14 20:41:51

标签: swift macos sockets

我正在开发一个简单的Swift应用程序,其中一个用户可以在本地网络上找到运行我的应用程序实例的其他计算机,然后使用TCP套接字将数据发送到该计算机。

我的问题是如何在同一网络上查找运行我的应用实例(跨平台)的设备的IP地址?

  • 我正考虑在本地网络上列出所有设备然后 检查他们是否已打开特定端口(我的应用程序端口 使用)?
  • 我还发现Apple提供了名为Bonjour的服务,可以让我的流程被发现。我不确定这个解决方案是否适合跨平台通信。

1 个答案:

答案 0 :(得分:0)

除了Mac相关的东西和高级解决方案(我相信关键字&#34;网络服务发现&#34;将带给你他们),有一些东西适用于本地网络:< / p>

拥有客户端应该向其报告的服务器。一些短的类似hello的UDP消息和一个超时机制足以保留网络中可用客户端的列表。

II 使用IP或UDP 组播组通知其他客户端刚刚连接到网络。向组播组发送消息并收听该组以构建客户端列表。

然而,广播和多播不会通过路由器传输。因此,如果您的网络足够大,只有相邻的客户端会听到您的通知。为了克服它,

III DHCP服务器可以配置为通过unassigned DHCP options向客户提供自定义数据。大型网络通常有这样的服务器。您可能可以使用它来发送客户列表,但我对此不确定。