我需要从DHCP获取可用的IP。我试图获取任何IP地址并开始ping下一个,直到我找到一个没有响应的地址。
public static IPAddress FindNextFree(this IPAddress address)
{
IPAddress workingAddress = address;
Ping pingSender = new Ping();
while (true)
{
byte[] localBytes = workingAddress.GetAddressBytes();
localBytes[3]++;
if (localBytes[3] > 254)
localBytes[3] = 1;
workingAddress = new IPAddress(localBytes);
if (workingAddress.Equals(address))
throw new TimeoutException("Could not find free IP address");
PingReply reply = pingSender.Send(workingAddress, 1000);
if (reply.Status != IPStatus.Success)
{
return workingAddress;
}
}
}
但是,有时DHCP会为某些计算机保留特殊地址,因此我需要从dhcp获取可用的ip地址。 我怎样才能在C#中实现它?
答案 0 :(得分:3)
这不是你使用它的正确方法, 你应该向DHCP服务器请求一个新的ip,然后接受它, 阅读有关与DHCP服务器通信的信息
http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
答案 1 :(得分:3)
客户端应用程序无法向DHCP服务器请求所有可用地址。
DHCP服务器只能处理来自客户端的以下消息:
有关其他信息,请参阅RFC 2131 - Dynamic Host Configuration Protocol。
如果您正在运行Windows DHCP server并且您可以访问该框,则可以使用Windows PowerShell Scripting来查询DHCP数据库。
摘自Weekend Scripter: Parsing the DHCP Database? No Way!
答案 2 :(得分:1)
我发现这个应用程序解决了这个问题 http://www.centrel-solutions.com/support/tools.aspx?feature=dhcpapi