Выше приведено медленно, так как требует DNS-вызова (и, очевидно, не будет работать, если он не доступен). Вы можете использовать код ниже, чтобы получить карту локальных адресов IPV4 текущего компьютера с соответствующей маской подсети:
public static Dictionary<IPAddress, IPAddress> GetAllNetworkInterfaceIpv4Addresses()
{
var map = new Dictionary<IPAddress, IPAddress>();
foreach (var ni in NetworkInterface.GetAllNetworkInterfaces())
{
foreach (var uipi in ni.GetIPProperties().UnicastAddresses)
{
if (uipi.Address.AddressFamily != AddressFamily.InterNetwork) continue;
if (uipi.IPv4Mask == null) continue; //ignore 127.0.0.1
map[uipi.Address] = uipi.IPv4Mask;
}
}
return map;
}
предупреждение: это еще не реализовано в Mono