c# - 获取未使用的 IP 地址

标签 c# networking

我需要从 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# 中实现它?

最佳答案

这不是你使用它的正确方式, 你应该向 DHCP 服务器请求一个新的 ip 然后接受它, 在此处阅读有关与 DHCP 服务器通信的信息

http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

关于c# - 获取未使用的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19273764/

相关文章:

c# - 您可以在 Windows 8 Metro 中混淆语言堆栈吗?

c# - 异步/等待 : who is waiting/blocking?

c# - .NET 的 SFTP 库

linux - 互斥解锁和 request_module() 行为

python - Python Theano 中的二进制输出神经网络

c++ - 我应该担心 Cassandra C++ 驱动程序的负载平衡选择吗?

c# - 从 C# 更改 for 循环中的 arduino 变量

c# - 是否可以实现具有通用功能的索引运算符 '[]'

java - 无法通过 Windows 10 和 DLINK DIR-615 路由器中的 Java 代码获取 DNS 请求

sockets - 当数据发送速度快于处理速度时,套接字将如何操作?