Код: Выделить всё
public static IPAddress GetEthernetIpAddress()
{
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
if (ni.OperationalStatus == OperationalStatus.Up)
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
{
return ip.Address;
}
}
}
}
}
return default;
}
Одно из решений, которое я нашел в Интернете, предлагает проверить, существует ли адрес шлюза, потому что, очевидно, сетевой интерфейс виртуальной машины его не имеет, но поиск в Google для подтверждения этого дал мне другой ответ:
Код: Выделить всё
if (ni.GetIPProperties().GatewayAddresses.FirstOrDefault() == null)
Код: Выделить всё
if (!ni.Name.Contains("vEthernet", StringComparison.OrdinalIgnoreCase))
Подробнее здесь: https://stackoverflow.com/questions/790 ... -from-a-vm
Мобильная версия