由IP和掩码计算广播地址

        public static IPAddress GetBroadcast(IPAddress ipAddress, IPAddress subnetMask)
        {
            var ip = ipAddress.GetAddressBytes();
            var sub = subnetMask.GetAddressBytes();

            // 广播地址=子网按位求反 再 或IP地址
            for (var i = 0; i < ip.Length; i++)
            {
                ip[i] = (byte) ((~sub[i]) | ip[i]);
            }
            return new IPAddress(ip);
        }

获取本机的广播地址。

        public static List<IPAddress> LocalBroadcasts
        {
            get
            {
                var lst = new List<IPAddress>();
                using (var moc = new ManagementClass("Win32_NetworkAdapterConfiguration").GetInstances())
                {
                    foreach (var item in moc)
                    {
                        using (item)
                        {
                            var ipArray = item["IPAddress"] as string[];
                            var subArray = item["IPSubnet"] as string[];

                            if (ipArray == null || subArray == null) continue;

                            for (var i = 0; i < ipArray.Length; i++)
                            {
                                var ipAddress = IPAddress.Parse(ipArray[i]);
                                var subAddress = IPAddress.Parse(subArray[i]);

                                if (ipAddress.IsIPv6LinkLocal) continue;

                                lst.Add(GetBroadcast(ipAddress, subAddress));
                            }

                        }
                    }
                }
                return lst;
            }
        }
时间: 2024-10-10 09:21:28

由IP和掩码计算广播地址的相关文章

Python获取本机所有网卡ip,掩码和广播地址

搜了一天,竟然没找到一段合适的代码来获取机器中所有网卡的ip,掩码和广播地址,大部分都是用socket,但是socket通常返回的要不就是内网地址,要不就是公网地址,不能够找到所有地址,真的太忧桑了,决定自己通过ifconfig或ipconfig的返回信息,一步步地过滤了.这次的代码主要用到了正则表达式和subprocess模块,而且为了兼容所有平台(win,linux和mac),也用到了platform来判断系统类型,不说太多,代码如下: import subprocess import re

access-list/eigrp等 反掩码计算

access-list/eigrp等 反掩码计算 原则:地址部分,相同的照写,不同的写"0" 反掩码部分,相同的写"0",不同的写"1" 如 172.16.1.0 172.16.2.0 172.16.3.0 172.16.8.0 172.16.9.0 172.16.10.0 172.16.11.0 172.16. 0000 0000 0000 0001 0000 0011 0000 1000 0000 1001 0000 1010 0000 10

IP、CIDR、广播地址、子网掩码、MAC地址--这些是什么鬼

继续学习趣谈网络协议中的内容,认识几个专有名词,IP.CIDR.广播地址.子网掩码.MAC地址,这些都是什么鬼? 一.IP IP地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码 (1)IP是英文Internet Protocol的缩写,意思是"网络之间互连的协议",也就是为计算机网络相互连接进行通信而设计的协议.在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则.任何厂家生产的计算机系统,只要遵守IP协议

网工基础TCP/IP协议栈(TCPI/P DHCP ICMP ARP 掩码计算)

服务礼仪规范解决方案: 1.接到任务后,主动联系客户获取工作地点.时间.联系人 (联系首选通信方式电话).2.与交接同事获取客户资料(包括但不限于 客户网络组网 客户网络故障情况 ),并及时进行了解.3.去客户现场前检查自己的工具(包括但不限于 串口线 网线 螺丝刀等).4.着装要求传一个成年人上班穿的服装.5.中途遇到意外情况,及时和客户沟通,说明情况.6.见面时跟客户不卑不亢,端庄大方介绍自己.7.发现故障问题时及时跟客户沟通,并确认好客户是否需要修改(修改客户网络要经过客户许可).8.准备

如何通过掩码计算可用的IP数量

假设掩码是28,28也就是28个1.本身掩码是255.255.255.255那么转换成二进制也就是 11111111,11111111,11111111,11111111 那么28个1也就是: 11111111,11111111,11111111,11110000 可变的就只有后面的四个0 也就是2**4=16 还需要减去网关和广播地址,也就是16-2=14那么也就推论出28的子网掩码可用的IP地址是有14个. 原文地址:https://www.cnblogs.com/nul1/p/101402

C#根据IP地址和子网掩码计算广播地址

using System.Net; /// <summary> /// 获得广播地址 /// </summary> /// <param name="ipAddress">IP地址</param> /// <param name="subnetMask">子网掩码</param> /// <returns>广播地址</returns> public static stri

【网络技术】根据ip地址子网掩码计算网络地址、直接广播地址、主机号

我不用专业的角度 去分析,我用傻瓜方法去做题. 这是模拟题,拿这个题做例子. 网址类型:当然是B类就不多说了 把ip地址和子网掩码转换成二进制,然后进行与运算. 145.189.24.3        10010001 10111101 00011000 00000011 255.255.224.0      11111111 11111111 11100000 00000000 网络地址:把ip地址和子网掩码进行与运算.两个1碰上是1  一个1碰上是0  两个0碰上 是0 变成了:      

IP地址快速计算

我们知道一个 C 类 IP 地址段中有 256 个 IP.一个 B 类地址段中有 65536 个 IP.计算方法为 256*256 那么一个 A 类 IP 地址则有 256*256*256 个 IP.子网掩 码分别为 255.255.255.0,255.255.0.0,255.0.0.0. 不管是 255.X.0.0 还是 255.255.X.0 或者是 255.255.255.X 我们一般只计算 X 的部分 X 部分的总位数一共是 8 位按以下方法进行划分,掩码部分可以不计. 因为掩码部分的计

ip首部校验和计算

IP首部校验和的计算方法: 1.把校验和字段清零. 2.然后对每16位(2字节)进行二进制反码求和,反码求和的意思是先对每16位求和,再将得到的和转为反码. 接下来详细描述反码求和的步骤:看下面的代码 算法: SHORT checksum(USHORT* buffer, int size){    unsigned long cksum = 0;    while(size>1)    {        cksum += *buffer++;        size -= sizeof(USHO