c++ - 检查私有(private)IP地址是否被使用

标签 c++ network-programming ip

据我了解,DHCP 会自动为设备分配 IP 地址。如果我想在主机(Windows 主机)专用网络中手动设置设备的 IP 地址,范围为 192.168.0.0 - 192.168.255.255 。我如何检查该地址是否已被占用。

我想编写一个函数,通过私有(private)网络范围内的有效地址递增。如果有效且未使用,则返回该地址。我需要一些方法来实现 ip_is_valid(int*ip_addr) 函数。

bool assign_ip( int* ip_addr)
{
    int new_ip_addr[4] = {192,168,0,0};
    for (int i = 0; i < 255; i++)
    {
        new_ip_addr[2] = i
        for (int j = 0; j <255; j++)
        {
            new_ip_addr[3] = i;
            if (ip_is_valid(new_ip_addr))
            {
                ip_addr[0] = new_ip_addr[0];
                ip_addr[1] = new_ip_addr[1];
                ip_addr[2] = new_ip_addr[2];
                ip_addr[3] = new_ip_addr[3];
                return(true);
            }
        }
    }
    return(false);
}

我可以使用哪些现有的 C++ 库来访问当前发布的 IP,或者我可以使用什么简单的方法来检查 IP 是否被使用(ping?)。

编辑:我想我可能没有表述我原来的问题。我使用的“网络”只是 PC 的专用寻址空间。它是本地的和孤立的。例如,如果我插入以太网设备,PC 会为其分配一个在 192.168.0.0 - 192.168.255.255 范围内的私有(private) IP 地址。仅供主机使用。我设置的手动地址是临时的。将使用不到一分钟然后丢弃。我不担心任何网络限制或问题,只是我如何检查 ip 是否已被使用。

最佳答案

不要那样做。即使它可行,您也无法阻止您的 DHCP 服务器稍后将该地址分配给另一台机器。

您应该在配置中限制您的 DHCP 服务器使用的地址范围。然后您可以静态分配其余地址。

关于c++ - 检查私有(private)IP地址是否被使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31930376/

相关文章:

c# - 是否有内置的方法来检查 IP 地址是否已被占用?

c++ - 定义模板结构的特征时出现不完整的类型错误

c++ - 如何从任意客户端查找 DHCP 租约信息?

c - 代码中的一些错误 - libpcap

c - 使用 select 的多客户端单服务器

Python,如何使用多个 NIC 获取所有外部 ip 地址

c++ - Const 方法 - 在实现中重复?

c++ - 隐式移动与复制操作和遏制

python - PlaySound仅播放默认的 “SystemAsterisk”声音(Windows 10,C++,Python)

php - 没有静态 IP,但需要限制对特定位置的访问