类似网络扫描的c ++

时间:2016-10-17 15:07:51

标签: c++ winapi network-programming ipv6 arp

我们正在开发类似于Fing的网络扫描功能。我们需要发现LAN上可用的网络设备并获取其IP和MAC地址。 我们当前的实现基于ARP表监控。因此,我们只需每隔一段时间获取ARP表,然后将当前ARP表与前一个ARP表进行比较,以查找添加和删除的设备。这种方法有效,但它并不完美,因为在设备连接到LAN的时刻与ARP表更新时刻之间可能存在很大的延迟。

所以我们希望改进当前的实施。我们的想法是获取LAN的一系列IP地址(我们知道子网掩码),然后我们可以对该范围的每个IP地址使用SendARP()。这将更新ARP表,以便我们可以继续使用原始方法。这应该适用于IPv4网络。但是我们应该如何处理IPv6网络呢?

实际上我们有几个关于IPv6扫描的想法,但我们不确定,所以你的帮助,伙计们,将非常感激:

  1. 我们可以ping地址ff02 :: 1。理论上,当我们ping这个广播地址时,IPv6设备应该响应,但看起来它将取决于设备设置。而且我不确定这是否会强制更新Windows ARP表。
  2. 尝试使用网络发现协议,它似乎可替代IPv4的ARP。但我找不到任何允许轻松使用NDP的Windows API。
  3. 所以我的问题是:

    1. 如果我们将如上所述使用它,SendArp()是否正常工作?
    2. 有没有办法强制在IPv6网络中更新ARP表?
    3. 提前致谢,

      维塔利彼得

0 个答案:

没有答案