给定一个字符串形式的IPv4地址(例如“10.171.24.69”)和一个网络掩码(例如“255.255.255.128”或“25”表示网络部分的位数)我需要计算广播地址,可以通过归零或归零主机部分中的位(取决于我可以通过WMI查询的IPUseZeroBroadcast属性)。
我正在检查System.Net.IPAddress类,但它看起来不足以完成任务。有什么建议吗?
答案 0 :(得分:3)
我不知道任何内置的功能,但你可以自己轻松地计算它
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");