gpt4 book ai didi

c++ - LAN 网络上所有主机的列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:09 25 4
gpt4 key购买 nike

如何获取局域网中所有的IP地址和关联的主机名?

最佳答案

要获取接口(interface)和 IP 地址列表,请使用 getifaddrs()

使用 ifa_addr->sa_family == AF_INET 搜索接口(interface)

IP 地址在 sin_addr.s_addr 中。

然后您可以使用 gethostbyaddr() 查找该 IP 地址的 DNS 名称。

更新:

有人向我指出,OP 可能询问的是发现其他主机,而不是本地计算机上的接口(interface)地址。

没有可靠的方法来发现局域网中的其他机器,但有一些技巧。

  • Ping 方法:使用 ping 实用程序(或等效程序)ping 本地广播地址,然后查看响应者。可以通过如上所示列出接口(interface)来找到广播地址。我相信 ICMP 在 OSX 下不需要 root 权限。请注意,许多系统可能禁用了 ICMP ping 或设置了防火墙,因此您只会收到来自非隐身系统的响应。

  • ARP 方法:检查系统 ARP 缓存以查看哪些 IP 地址最近处于事件状态。这只会显示最近几分钟在同一网段上有广播数据包的系统。

这两种方法都可能被防火墙、路由器甚至交换机阻止,因此“LAN”的确切边界可能非常狭窄。这两种方法都可以通过编程方式实现,但调用命令行 pingarp 命令可能更简单、更便携。

关于c++ - LAN 网络上所有主机的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023222/

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