ITPub博客

首页 > 应用开发 > > 通过ip地址和子网掩码求广播地址

通过ip地址和子网掩码求广播地址

作者:deeply 时间:2019-09-05 13:52:10 0 删除 编辑

下面是C语言代码的实现:

#include <stdio.h>

#define _IPV4_VAL_(addr3,addr2,addr1,addr0) ((((unsigned long)addr3 << 24) & 0xFF000000) | (((unsigned long)addr2 << 16) & 0xFF0000) | (((unsigned long)addr1 << 8) & 0xFF00) | (((unsigned long)addr0) & 0xFF))
#define _IPV4_BYTE_(val, index) ((val >> (index * 8)) & 0xFF)

int main(int argc,char **argv)
{
    int ret_val = -1;
    unsigned char ip_addr[4] = {192,168,4,100};
    unsigned char ip_mask_addr[4] = {255,255,255,0};
    unsigned long ip_addr_ = _IPV4_VAL_(ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]);
    unsigned long ip_mask_addr_ = _IPV4_VAL_(ip_mask_addr[0], ip_mask_addr[1], ip_mask_addr[2], ip_mask_addr[3]);

    unsigned char brocast_ip_addr[4];
    unsigned long brocast_ip_addr_ = _IPV4_VAL_(ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]);
    int index = 0;

    for(index = 0; index < 32; index++)
    {
        if(ip_mask_addr_ & (1 << index))
        {
            break;
        }
        brocast_ip_addr_ |= (1 << index);
    }

    brocast_ip_addr[0] = _IPV4_BYTE_(brocast_ip_addr_, 3);
    brocast_ip_addr[1] = _IPV4_BYTE_(brocast_ip_addr_, 2);
    brocast_ip_addr[2] = _IPV4_BYTE_(brocast_ip_addr_, 1);
    brocast_ip_addr[3] = _IPV4_BYTE_(brocast_ip_addr_, 0);

    printf("brocast_ip_addr:%d.%d.%d.%d\n", brocast_ip_addr[0], brocast_ip_addr[1], brocast_ip_addr[2], brocast_ip_addr[3]);

    return 0;
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1978/viewspace-3166456/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ssm+maven乱码
下一篇: libxml2
请登录后发表评论 登录
全部评论

注册时间:2008-05-30

  • 博文量
    215
  • 访问量
    24535