当前位置: 首页 > 编程语言 > C#

如何获取主机默认网卡的广播地址?C#分享

时间:2023-04-10 19:05:42 C#

如何获取宿主机默认网卡的广播地址?C#假设??我想向我子网中的每个主机发送udp消息(然后从我子网中的任何主机接收udp消息):目前我这样做:IPAddressbroadcast=IPAddress.Parse("192.168.1.255");但当然,如果子网不是192.168.1/24,我希望这可以动态完成。我试过了:IPAddressbroadcast=IPAddress.Broadcast;但是IPAddress.Broadcast代表“255.255.255.255”,它不能用于发送消息(它会抛出异常)...那么:如何获取本地网络适配器广播地址(或网络掩码)?这是我采用的最终解决方案publicIPAddressgetBroadcastIP(){IPAddressmaskIP=getHostMask();IP地址hostIP=getHostIP();如果(maskIP==null||hostIP==null)返回null;byte[]complementedMaskBytes=newbyte[4];byte[]broadcastIPBytes=newbyte[4];对于(inti=0;i<4;i++){complementedMaskBytes[i]=(byte)~(maskIP.GetAddressBytes().ElementAt(i));broadcastIPBytes[i]=(byte)((hostIP.GetAddressBytes().ElementAt(i))|complementedMaskBytes[i]);}返回新IP地址(广播IP字节);}privateIPAddressgetHostMask(){NetworkInterface[]Interfaces=NetworkInterface.GetAllNetworkInterfaces();foreach(接口中的网络接口接口){IPAddresshostIP=getHostIP();UnicastIPAddressInformationCollectionUnicastIPInfoCol=Interface.GetIPProperties().UnicastAddresses;foreach(UnicastIPInfoCol中的UnicastIPAddressInformationUnicatIPInfo){if(UnicatIPInfo.Address.ToString()==hostIP.ToString()){returnUnicatIPInfo.IPv4Mask;}}}返回空值;GetHostEntry(Dns.GetHostName())).AddressList){如果(ip.AddressFamily==AddressFamily.InterNetwork)返回ip;}返回空值;}如果拿到本地IP和子网,计算应该没问题这样的事情可能吗?使用系统;使用System.Net.NetworkInformation;公共类测试{publicstaticvoidMain(){NetworkInterface[]Interfaces=NetworkInterface.GetAllNetworkInterfaces();foreach(接口中的网络接口接口){if(接口.NetworkInterfaceType==NetworkInterfaceType.Loopback)继续;如果(Interface.OperationalStatus!=OperationalStatus.Up)继续;Console.WriteLine(Interface.Description);UnicastIPAddressInformationCollectionUnicastIPInfoCol=Interface.GetIPProperties().UnicastAddresses;Addressis{0}",UnicatIPInfo.Address);Console.WriteLine("tSubnetMaskis{0}",UnicatIPInfo.IPv4Mask);}}}}HowtocalculateIPrangegivenIPaddressandnetmask?应该给你剩下的.以上是C#学习教程:如何获取主机默认网卡的广播地址?C#分享的所有内容,如果对您有用,还需要进一步了解C#学习教程,希望大家多多采纳多多关注,本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,如需转载请注明出处: