我正在扫描本地网络上的IP,找到IP后,我希望收到的信息之一是该IP是静态的还是动态的。到目前为止,我发现的最接近我的问题仅是检查您自己的计算机。这是我的功能:
private bool isDynamic()
{
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
int currentSocketIndex = (new IPPacketInformation()).Interface;
bool isDynamic = adapters[currentSocketIndex].GetIPProperties().GetIPv4Properties().IsDhcpEnabled;
return isDynamic;
}
我想对此进行修改,以便它可以使用IP地址,连接到IP所属的设备(如果该IP存在并且不阻止连接),并确定是否那个机器的IP是静态/动态的。目前,我的功能仅检查我的机器。
有人能指出我正确的方向吗?我找不到执行此类操作的参考,但我怀疑这是不可能的。
答案 0 :(得分:0)
您找不到任何有关它的信息,因为如果您无法访问路由器,那将是不可能的。您只能通过询问路由器来发现,这很可能不会告诉您,或者需要路由器特定的请求/协议来告诉您。或者,您可以直接询问不会告诉您其IP是静态还是动态的设备,除非您在该计算机上安装了可以回答您请求的应用程序。某些操作系统可能已经提供了这种服务(例如Windows上的WMI),但是您将永远无法分辨出每个网络设备。
但是:
如果您有很多时间,您可以收听DHCP / BootP流量并找到这样的动态设备,因为动态设备会经常刷新其会话
一种不同的方法:
这个新主意但是在重要网络中却很危险,我根本不建议这样做:启动您自己的DHCP服务器并开始提供地址,看看谁接受它们,然后再将它们重新设置。请注意,例如,这可能会对公司网络造成巨大的损害。