首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据ip和子网掩码计算广播地址

根据ip和子网掩码计算广播地址
EN

Stack Overflow用户
提问于 2009-04-22 14:53:07
回答 5查看 57.5K关注 0票数 19

我要计算以下内容的广播地址:

代码语言:javascript
复制
IP:     192.168.3.1
Subnet: 255.255.255.0
=       192.168.3.255

在C中。

我知道方法(在倒置的IP和子网之间进行奇特的逐位OR),但我的问题是我来自MacOSX Cocoa编程的绿地。

我查看了ipcal的源代码,但无法将其集成到我的代码库中。在互联网上的某个地方肯定只有十行代码,我就是找不到。有没有人可以给我举一个简短的代码例子,告诉我如何用C语言来做这件事?

EN

回答 5

Stack Overflow用户

发布于 2009-04-22 14:55:32

只要计算一下:

代码语言:javascript
复制
broadcast = ip | ( ~ subnet )

(广播=ip地址或反转的子网掩码)

广播地址具有1位,而子网掩码具有0位。

票数 40
EN

Stack Overflow用户

发布于 2013-07-17 12:35:53

据我所知,OP至少对位级算术有模糊的理解,但在将字符串转换为数字及其倒数时迷失了方向。下面是一个使用froh42的计算的工作示例(无论如何只需进行最少的测试)。

代码语言:javascript
复制
jcomeau@aspire:~/rentacoder/jcomeau/freifunk$ cat inet.c; make inet; ./inet 192.168.3.1 255.255.255.0
#include <arpa/inet.h>
#include <stdio.h>
int main(int argc, char **argv) {
    char *host_ip = argc > 1 ? argv[1] : "127.0.0.1";
    char *netmask = argc > 2 ? argv[2] : "255.255.255.255";
    struct in_addr host, mask, broadcast;
    char broadcast_address[INET_ADDRSTRLEN];
    if (inet_pton(AF_INET, host_ip, &host) == 1 &&
        inet_pton(AF_INET, netmask, &mask) == 1)
        broadcast.s_addr = host.s_addr | ~mask.s_addr;
    else {
        fprintf(stderr, "Failed converting strings to numbers\n");
        return 1;
    }
    if (inet_ntop(AF_INET, &broadcast, broadcast_address, INET_ADDRSTRLEN) != NULL)
        printf("Broadcast address of %s with netmask %s is %s\n",
            host_ip, netmask, broadcast_address);
    else {
        fprintf(stderr, "Failed converting number to string\n");
        return 1;
    }
    return 0;
}
cc     inet.c   -o inet
Broadcast address of 192.168.3.1 with netmask 255.255.255.0 is 192.168.3.255
票数 6
EN

Stack Overflow用户

发布于 2009-04-22 14:59:26

会是这样吗?

代码语言:javascript
复制
unsigned broadcast(unsigned ip,unsigned subnet){
    unsigned int bits = subnet ^ 0xffffffff; 
    unsigned int bcast = ip | bits;

    return bcast;
}

编辑:我认为ip和子网都没有“。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/777617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档