【问题标题】:How to find IP addresses of devices on local network which are running an instance of my app in Swift?如何在本地网络上查找在 Swift 中运行我的应用程序实例的设备的 IP 地址?
【发布时间】:2017-02-14 20:41:50
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift macos sockets


    【解决方案1】:

    除了与 Mac 相关的东西和高级解决方案(我相信关键字“网络服务发现”会带您了解它们)之外,还有几件事适用于本地网络:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 2014-05-25
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多