gpt4 book ai didi

c++ - 是否有任何快速技术来获取子网中的所有 ip 地址?

转载 作者:行者123 更新时间:2023-11-28 00:54:35 25 4
gpt4 key购买 nike

previous question我尝试获取子网中的所有有效 IP 地址,所以我使用 for 循环,但在我尝试之后,我发现我的代码需要超过 2 分钟才能找到子网中的所有 IP 地址,在某些情况下它是需要 5 分钟以上!

我的代码是在 Mac OS 下用 C++ 编写的;

但在 Windows 中,要执行相同的操作,您只需编写 net view/all 命令,它会立即打印子网中的所有 IP 地址!

在 MAC 操作系统中,您可以使用 Bonjour 服务来完成这样的工作。

这些技术如何以这样的速度工作(Net view/allBonjour service )?有什么办法可以像这样快速完成这项工作吗?如果没有,请告诉我是否有 API 可以直接在我的 mac os 代码(C++)中使用 Bonjour 服务?

编辑:

我发现了新的想法

我发现在 apple 上开发了一些名为 Bonjour API 的 api,我认为它很有帮助,但我如何使用它,因为我知道 mac 使用 opbjectiv-c。

bonjour

最佳答案

net view/all 在 Windows 网络级别上工作,而不是在 IP 级别上工作。它只会列出启用了 Windows 网络和名称解析的机器。如果您的计算机没有运行 Windows(或 samba),它们将不会被列出。打印机、路由器等也是如此。

对于 IPv4,最好的方法是通过检查计算机的 IP 地址和网络掩码来提取当前子网中的 IP 地址列表。然后强制对每个 IP 地址执行 ARP 查找。如果设备存在于网络中,ARP 查找将始终有效,即使它已完全锁定(没有端口打开,不响应 ping)。

有了 IPv6,您基本上就不走运了。单个子网中的可用 IP 地址数量 (18 446 744 073 709 551 616) 如此之少,以至于无法进行详尽的搜索。

关于c++ - 是否有任何快速技术来获取子网中的所有 ip 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com