В программе нужно получить свой ip адрес. Делаю это такой функцией:
public static string GetLocalIPAddress()
{
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
return ip.ToString();
}
}
return null;
}
Но существует следующая проблема: Если на машине установлен виртуальный сетевой адаптер (например, от VirtualBox), то функция выдаёт его ip-адрес.
Можно ли как-нибудь отфильтровать виртуальные адаптеры?
Добавьте ссылку на System.Management и используйте WMI-запрос к классу Win32_NetworkAdapter, у реальных интерфейсов должно быть PhysicalAdapter=true. Для получения Guid интерфейса можно использовать NetworkInterface.GetAllNetworkInterfaces()
. Как-то так:
using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;
using System.Management;
...
//Определяет, является ли адаптер физическим
public static bool IsAdapterPhysical(string guid)
{
ManagementObjectCollection mbsList = null;
ManagementObjectSearcher mbs = new ManagementObjectSearcher(
"SELECT PhysicalAdapter FROM Win32_NetworkAdapter WHERE GUID = '" + guid + "'"
);
bool res = false;
using (mbs)
{
mbsList = mbs.Get();
foreach (ManagementObject mo in mbsList)
{
foreach (var p in mo.Properties)
{
if (p.Value != null)
{
res = (bool)p.Value;
break;
}
else res = false;
}
}
return res;
}
}
//Получает все локальные IP-адреса
public static List<IPAddress> GetIpAddresses()
{
List<IPAddress> res = new List<IPAddress>(10);
var ifs = NetworkInterface.GetAllNetworkInterfaces();
foreach (var interf in ifs)
{
var ipprop=interf.GetIPProperties();
if (ipprop == null) continue;
var unicast = ipprop.UnicastAddresses;
if (unicast == null) continue;
if (IsAdapterPhysical(interf.Id.ToString()))
{
//находим первый Unicast-адрес
foreach (var addr in unicast)
{
if (addr.Address.AddressFamily != AddressFamily.InterNetwork) continue;
res.Add(addr.Address);
break;
}
}
}
return res;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Достаю из xml файла список учеников, хочу удалить одного из них и записать измененияВот так это выглядит:
У меня в solution имеется два проектаОдин textEdit, второй textEdit
В контроллере у меня есть два метода, Get и PostВ представлении первого создана форма, в которой пользователь загружает изображение и текстовый...
Недавно открыл для себя даппер и теперь пишу свой репозиторий(велосипед) для негоВ ходе написания встала необходимость получить список всех...