美文网首页
C通过网关IP和子网掩码计算子网所有的IP

C通过网关IP和子网掩码计算子网所有的IP

作者: 嘻嘻哈哈哎呀呀 | 来源:发表于2024-03-19 15:57 被阅读0次

    代码如下 :

    // 将整数转换为IP地址  
    void int_to_ip(unsigned int ip, char *buffer) {  
        sprintf(buffer, "%u.%u.%u.%u", (ip >> 24) & 0xFF, (ip >> 16) & 0xFF, (ip >> 8) & 0xFF, ip & 0xFF);  
    }   
    //将IP转换为整数  
    unsigned int ip_to_int(char *ip) {  
        unsigned int a, b, c, d;  
        sscanf(ip, "%u.%u.%u.%u", &a, &b, &c, &d);  
        return (a << 24) + (b << 16) + (c << 8) + d;  
    }
      
    // 计算子网内所有IP地址  
    void calculate_ips(char *gateway, char *netmask) {  
        unsigned int base_ip = ip_to_int(gateway); // 网关IP地址转换为整数  
        unsigned int net_ip = base_ip & ip_to_int(netmask); // 子网网络地址转换为整数  
        unsigned int broadcast_ip = net_ip | ~(ip_to_int(netmask)); // 子网广播地址转换为整数  
        printf("%ul,%ul,%ul\n", base_ip,net_ip,broadcast_ip);   
        char buffer[16];
        for (unsigned int i = net_ip; i <= broadcast_ip; i++) { // 遍历子网内所有IP地址  
            int_to_ip(i, buffer); // 将整数转换为IP地址并存储到缓冲区中  
            printf("%s\n", buffer); // 输出IP地址  
        }  
    }  
    
      
    int main2() {  
        char gateway[] = "172.16.30.1"; // 网关IP地址  
        char netmask[] = "255.255.255.0"; // 子网掩码  
        calculate_ips(gateway, netmask); // 计算子网内所有IP地址并输出结果到屏幕上,测试用,可注释掉  
        return 0;  
    }
    

    相关文章

      网友评论

          本文标题:C通过网关IP和子网掩码计算子网所有的IP

          本文链接:https://www.haomeiwen.com/subject/bidttjtx.html