给定一个字符串形式的 IPv4 地址(例如“10.171.24.69”)和一个网络掩码(例如“255.255.255.128”或“25”表示网络部分的位数)我需要计算广播地址,这可能是通过将主机部分中的位清零或置一(取决于我可以通过 WMI 查询的 IPUseZeroBroadcast 属性)。
我正在检查 System.Net.IPAddress 类,但它看起来不足以完成任务。有什么建议么?
给定一个字符串形式的 IPv4 地址(例如“10.171.24.69”)和一个网络掩码(例如“255.255.255.128”或“25”表示网络部分的位数)我需要计算广播地址,这可能是通过将主机部分中的位清零或置一(取决于我可以通过 WMI 查询的 IPUseZeroBroadcast 属性)。
我正在检查 System.Net.IPAddress 类,但它看起来不足以完成任务。有什么建议么?
我不知道任何内置函数,但你可以很容易地自己计算
static IPAddress ComputeBroadcastIP(IPAddress ip, IPAddress netmask)
{
byte[] ipBytes = ip.GetAddressBytes();
byte[] maskBytes = netmask.GetAddressBytes();
byte[] broadcastBytes = new byte[ipBytes.Length];
for (int i = 0; i < broadcastBytes.Length; i++)
{
broadcastBytes[i] = (byte)(ipBytes[i] | ~maskBytes[i]);
}
return new IPAddress(broadcastBytes);
}
你也可以做
IPAddress broadcast = new IPAddress((ip.Address | (~mask.Address)) & 0xffffffff);
但该.Address
属性已被弃用。
请注意,要将“1.2.3.4”之类的字符串转换为IPAddress
,您可以调用IPAddress.Parse
,例如
IPAddress foo = IPAddress.Parse("1.2.3.4");