【问题标题】:How can I scan for all IPs of devices connected to the network using Apple's Network Framework?如何使用 Apple 的网络框架扫描连接到网络的所有设备的 IP?
【发布时间】:2022-11-22 03:50:37
【问题描述】:
我想扫描在我的设备当前连接的网络中找到的任何设备。我想找到他们的 IP 地址和更多信息,这样我就可以向用户展示网络中所有设备的列表,并提供尽可能详细的信息。
我找到了使用getifaddrs 的示例。它们有点工作,但是,我无法在 Mac 应用程序商店中看到使用 IP Scanner 等应用程序可以看到的所有设备。
在这个过程中我了解到苹果正在推的新框架是Network框架。
我还没有找到很多关于如何使用 Network 框架构建 IP 扫描器的示例。我想我可以使用 NWBrowser 实现这一点,但我不确定,因为这似乎完全是 Bonjour 游戏。
有没有人有我可以遵循的示例来学习如何使用新的 Apple Network Framework 构建 IP 扫描器?
【问题讨论】:
-
使用像MMLanScan 这样的库。基本思想是遍历子网中的 IP,发送 ping 数据包,如果 ping 成功,则获取更多详细信息,如 MAC 地址、主机名等。
标签:
ios
swift
networking
network-framework
【解决方案1】:
网络框架提供了一组用于处理网络相关任务的高级原语。它旨在使执行与网络相关的常见任务变得容易,例如创建网络连接、传输数据和监视网络活动。
该框架提供了一组 API,用于处理与网络相关的任务,例如创建网络连接、传输数据和监视网络活动。它还提供了一组用于处理网络协议(如 TCP、UDP 和 IP)的低级 API。
要创建网络连接,您可以使用 NWConnection 类。此类提供用于处理网络连接的高级接口。它处理设置和维护网络连接的所有细节,例如创建底层套接字、连接到远程主机和传输数据。
要传输数据,您可以使用 NWConnection 类的发送和接收方法。这些方法为在本地和远程主机之间传输数据提供了一个简单的接口。
要监视网络活动,您可以使用 NWConnection 类的启动和停止方法。这些方法允许您开始和停止监视网络活动。
NWConnection 类还提供了许多可用于配置连接行为的属性。例如,您可以使用连接的 allowsCellularAccess 属性来指定是否允许连接使用蜂窝数据。
网络框架还提供了一组较低级别的 API,用于处理网络协议,例如 TCP、UDP 和 IP。这些 API 提供了对使用网络协议的细节的更细粒度的控制。
例如,NWProtocol 类提供了一个用于处理网络协议的接口。它允许您创建和配置网络协议对象,例如 TCP 和 UDP 对象。