有一种优雅的方法可以让程序检测连接到网络的新计算机吗?
我希望我的程序能够"自动感知"在网络上连接的新计算机(它们位于同一网络上).就像连接到计算机的USB设备一样.
我现在正在做的是不时保存网络中所有计算机的列表.另一种方法是在子网上PING所有可用的IP.
还有其他优雅的方法吗?
谢谢!
侦听 ARP 请求是执行此操作的规范方法。无论是否独立于 DHCP,任何希望与外界通信的连接计算机都必须向默认路由器的地址发出 ARP 请求。此请求将作为广播发出,并包含源接口的 MAC 和 IP 地址。
如果另一台计算机使用 DHCP,它会向自己的地址发出 ARP 请求,作为重复地址检测的一部分,这也是您可以监听的广播。
(这与 IPv6 的工作方式大致相同,除了您需要查找邻居发现或路由器请求数据包。)
就像提到的答案一样,如果您有一个可以远程登录或使用 SNMP 的交换机,则可以提取 MAC 表。这将为您提供交换机中每个端口上的 MAC 地址列表。但是,如果您想要 IP 地址,您仍然需要侦听 ARP:s。
另一方面,如果您可以访问网络上的默认网关,您还可以查看那里的 ARP 表。这将为您提供最近(对于最近的不同值...)与之通信的任何人的 MAC 和 IP 地址。
| 归档时间: |
|
| 查看次数: |
3668 次 |
| 最近记录: |